std::vector::erase的用法
c++11的函数
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
eg
#include <iostream>
#include <vector> //erase
using namespace std;
int main ()
{
std::vector<int> myvector;
// set some values (from 1 to 10)
for (int i=1; i<=10; i++) myvector.push_back(i);
// erase the 6th element
myvector.erase (myvector.begin()+5);
// erase the first 3 elements:
myvector.erase (myvector.begin(),myvector.begin()+3);
std::cout << "myvector contains:";
for (unsigned i=0; i<myvector.size(); ++i)
std::cout << ' ' << myvector[i];
std::cout << '\n';
return 0;
}
注意
当使用std::vector::erase后
eg.
vector<CoreUser>::iterator ite = v.begin();
for(;ite < v.end();ite++){
if(ite -> cost < 24.0){
v.erase(ite--);
//v.erase(ite);
//ite--;
}
}
vector::erase()的实质是将迭代器后面的元素全部复制一遍,往前移动一个位置
故,ite会从删除元素指向下一个元素
故需进行ite - -,来抵消for里的ite++.