您的位置:首页 > 编程语言 > C语言/C++

C++ vector 删除某一元素

2015-10-14 11:51 302 查看
在用Vector删除某一个元素的时候经常互出现不可思议的情况,例如:

vector<int> count;

count{0,0,0,437,0,0,0};

想要删除count中的0元素,使用如下程序:

vector <int>::iterator Iter;

for (Iter=count.begin();Iter!=count.end();Iter++)

{

if (*Iter==0)

{

count.erase(Iter);

Iter=count.begin();

}

}

经过处理后,count中仍然有0元素,输出的值为0,437。具体的原因:

问题出在for里的“Iter++”,留下的那个0应该是第二个0,因为删除第一个0后你重新赋值iter为begin(),由于已经删除第一个0,所以此时的begin为第二个0,然后经过第一次iter++,即iter指向第三个0,此时删除第三个0,然后有一次赋值begin(),重新指向第一个0,而for循环又到了iter++所以此时iter指向了437,如此类推,后面的所有0都没了,就剩下“0,437”!

修正代码如下:
vector <int>::iterator Iter;

for (Iter=count.begin();Iter!=count.end();)

{

if (*Iter==0)

{

count.erase(Iter);

Iter=count.begin();

}

else

{

Iter++;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: