在用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++; } } |