小弟刚开始接触编程,下面程序提示越界,希望论坛里的大神能帮忙解答下
#include
#include
using namespace std;
int main()
{
vector a;
int b,c=0;
while(cin>>b)
{
a.push_back(b);
}
for(vector::iterator iter1=a.begin();iter1!=a.end()-1;iter1++)
{
vector::iterator iter2=iter1+1;
vector::iterator iter3=iter1;
while(iter3>=0 && (iter2)>(iter3))
{
c=*(iter2);
(iter2)=(iter3);
*(iter3)=c;
iter3--;
iter2--;
}
}
for(vector::iterator iter=a.begin();iter!=a.end();iter++)
{
cout<<*iter<<" ";
}
return 0;
}
vector::iterator iter2=iter1+1这句话很危险,因为当iter1已经到达end时,再加一,就有问题了
先看你的代码哪里越界了。
vector::iterator iter2=iter1+1;
最后一次循环,会走到iter2等于end(),,这个你不能直接访问。
谢谢各位的解答,我这些细节会注意的,还有我这个程序有一个很大的问题就是我用迭代器直接跟0在作比较,这是一个很严重的错误