关于vector的问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:44:08
void insertorder(vector<int> &vInt, int newValue)
{
vector<int>::iterator iter=vInt.begin();
cout<<"size:"<<vInt.size()<<endl;
for (int n=0;n<vInt.size();n++)
{
iter++;

if (vInt[n]<=newValue && vInt[n+1]>=newValue)
{

vInt.insert(iter,newValue);
cout<<*iter<<endl;

/* 执行过insert之后,原来的iterator就不是valid了,那么此处的cout结果为什么还是3呢? */
vInt.erase(iter);
/*此处被去掉的是第一个element,就是最开始的iterator被去掉了,并且,就算换成iter++,或是其他表达,去掉的也是第一个,为什么呢?*/
break;
}

}
}
55~~挨骂了~~其实我只是想问如果执行过一次之后,我还想用现在这个iterator应该怎样弄~~

STL在正确的情形下是如何工作的就已经够复杂了,你还要去研究它在已经出错情形下的逻辑行为!!!(既然告诉你迭代器已经失效,那么它的行为就是未定义的,就算你费尽心思查出来也只能代表一个特例而已,不能推而广之的)