c++容器vector删除元素erase()与迭代器的使用
写代码时用 for 循环删除 vector 中的元素发现总是报错,后来最细看了下 erase() 方法发现 erase()方法使用后原来的迭代器失效,返回新的迭代器。正确的使用方法是:#include <iostream>#include <vector>using namespace std;int main(){vector<
·
写代码时用 for 循环删除 vector 中的元素发现总是报错,后来最细看了下 erase() 方法发现 erase()方法使用后原来的迭代器失效,返回新的迭代器。
正确的使用方法是:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v = { 0, 1, 2, 3 };
for (vector<int>::iterator it = v.begin(); it != v.end();)
{
if (*it == 2)
{
it = v.erase(it);
//cout << *it << endl;
//break;
}
else
{
++it;
}
}
for each (int var in v)
{
cout << var;
}
cout << endl;
system("pause");
return 0;
}
输出:0, 1, 3
algorithm 库还有一个相似的方法 remove(),使用方法如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = { 0, 1, 2, 3 };
remove(v.begin(), v.end(), 2);
for each (int var in v)
{
cout << var;
}
cout << endl;
system("pause");
return 0;
}
输出:0, 1, 3, 3
长度不变,用最后一个元素填补。
更多推荐
已为社区贡献1条内容
所有评论(0)