c++ vector erase的注意事项
Posted weixin_43739821
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ vector erase的注意事项相关的知识,希望对你有一定的参考价值。
-
要接收erase返回的迭代器
-
erase返回的迭代器自动指向下一个位置,所以代码里有erase的, 要注意只有不运行erase的部分需要 iterator++
int main()
std::vector<int> myInt;
myInt.push_back(1); myInt.push_back(2); myInt.push_back(3);
//for (auto iter = myInt.begin();
for (vector<int>::iterator iter = myInt.begin();iter != myInt.end();) //iter++ 不要写在这里
if (*iter == 1)
cout << "erase" << *iter << endl;
iter = myInt.erase(iter); //要接收earse返回的iter
//不要iter++
else
cout << "no erase" << *iter << endl;
iter++; //iter++ 写在这里
while (1);
int main()
std::vector<int> myInt;
myInt.push_back(1); myInt.push_back(2); myInt.push_back(3);
vector<int>::iterator iter = myInt.begin();
while (iter != myInt.end())
if (*iter == 1)
cout << "erase" << *iter << endl;
iter = myInt.erase(iter);
else
cout << "no erase" << *iter << endl;
++iter;
while (1);
以上是关于c++ vector erase的注意事项的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Python 中重写 C++ 代码时出现问题:删除地图中的项目和“vector.erase(vector.end())”