C++中Vector.erase()删除某一元素的正确用法

论坛 期权论坛 脚本     
匿名技术用户   2021-1-17 10:54   1538   0

在用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。具体的原因一时半会想不清楚,先记下正确的操作代码如下:

vector <int>::iterator Iter;
for (Iter=count.begin();Iter!=count.end();)
{
if (*Iter==0)
{
count.erase(Iter);
Iter=count.begin();
}
else
{
Iter++;
}
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP