#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;
}std::remove(first,last,val)移除[first, last)范围内等于val的元素
在vector里面用就类似于
iter = std::remove(vec.begin(), vec.end(), val)
但这个函数只是把val移到vec的末尾,并不真正删除
未被remove的元素整体前移
本文通过C++代码示例介绍了如何从std::vector中移除指定值,包括使用std::remove将指定值移至容器尾部及随后使用erase完成实际删除的过程。

5620

被折叠的 条评论
为什么被折叠?



