绪
C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。
C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。
1. std::vector::erase()
iterator erase (iterator position); //删除指定元素
iterator erase (iterator first, iterator last); //删除指定范围内的元素
返回值:指向删除元素(或范围)的下一个元素。
2.实例
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int out(vector<int> &iVec)
{
for (int i = 0; i < iVec.size(); i++)
cout << iVec[i] << ends;
cout << endl;
return 0;
}
int main()
{
vector<int> iVec;
int i;
for (i = 0; i < 10; i++)
iVec.push_back(i);
cout << "The Num(old):"; out(iVec);
vector<int>::iterator it;//定义迭代器
for (it = iVec.begin(); it != iVec.end();)
{
if (*it % 3 == 0)
it = iVec.erase(it); //删除元素,返回值指向已删除元素的下一个位置
else
++it; //指向下一个位置
}
cout << "The Num(new):"; out(iVec);
return 0;
}
image.png
网友评论