程序崩溃,原因?

来源:百度知道 编辑:UC知道 时间:2024/06/16 09:35:04
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int ia[]={0,1,2,3,4,5,6,7,8,9};
vector<int> ivec(ia,ia+10);
vector<int>::iterator iter;
iter=ivec.end();
--iter;
while(iter>=ivec.begin())
{
cout<<*iter<<endl;
--iter;
}
cout<<endl;
return 0;
}
一楼大哥,没越界的,第二个参数指向最后一个元素的下一位的。再说该为9也崩溃的。

iter

指针范围 只能在ivec.begin() 与ivec.end() 之间 ,超出 则越界, 程序中--iter 运行到开始处 又减一,超过了指针所能表示的下界 所以会出现问题

可以修改为:

int main()
{
int ia[]={0,1,2,3,4,5,6,7,8,9};
vector<int> ivec(ia,ia+10);
vector<int>::iterator iter;
iter=ivec.end();
// 去掉一个
while(iter>=ivec.begin()+1)
{

--iter;
cout<<*iter<<endl;

}

cout<<endl;
return 0;
}

这样才会正确运行

vector<int> ivec(ia,ia+10); //指针越界
vector<int> ivec(ia,ia+9);