從std::vector中移除指定元素的方法
阿新 • • 發佈:2019-01-09
std::remove(first,last,val)#include <iostream> #include <algorithm> #include <vector> typedef int MyType; using namespace std; int main() { std::vector <MyType> vec1; //假設這裡永遠不會存放-1 std::vector <std::size_t> vec2; for(int i=0;i<10;i++) { vec1.push_back(i); if (i%2) vec2.push_back(i); } vector <size_t>::iterator iter=vec2.begin(); for(;iter!=vec2.end();++iter) { if (*iter<vec1.size()) vec1[*iter] = -1; //標誌刪除位 } vec1.erase(remove(vec1.begin(),vec1.end(),-1),vec1.end());//重點 for(int i=0;i<vec1.size();i++) cout<<vec1[i]<<endl; return 0; }
移除[first, last)範圍內等於val的元素
在vector裡面用就類似於
iter = std::remove(vec.begin(), vec.end(), val)
但這個函式只是把val移到vec的末尾,並不真正刪除
未被remove的元素整體前移