STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除。若要真正移除,需要搭配使用erase()。
详见程序:
#include<iostream>
#include<algorithm>
#include<vector>
#include<list>
#include<stdlib.h>
using namespace std;
template<class T>
void display(const T& input)
{
for (auto iele = input.cbegin(); iele != input.cend(); iele++)
{
cout << *iele << ' ';
}
cout << endl;
}
int main()
{
vector<int> vints;
for (int i = 0; i < 10; i++)
vints.push_back(i);
display(vints);
auto inewend = remove(vints.begin(), vints.end(), 2);
display(vints);
vints.erase(inewend, vints.end());
display(vints);
auto inew = remove_if(vints.begin(), vints.end(), [](int element){return((element % 2) == 1); });
display(vints);
vints.erase(inew, vints.end());
display(vints);
system("pause");
return 0;
}
结果图: