#include<iostream>
#include<functional>
#include<algorithm>
#include<list>
#include<iterator>
//删除并不是真正的删除,而是后边的元素向前一定,覆盖掉原来的数
using namespace std;
void print(list<int> &i)
{
for (auto iter = i.begin(); iter != i.end(); ++iter)
cout << *iter << " ";
cout << endl;
}
int main()
{
list<int> l;
for (int i = 1; i <= 6; ++i)
{
l.push_front(i);//向前插入
l.push_back(i);//向后插入
}
print(l);
auto end = remove(l.begin(), l.end(), 3);//后边的元素向前移动,删除算法是逻辑的删除,并没有改变元素的个数
print(l);//都有返回值,返回的是新的逻辑终点
//返回没有被覆盖的那一个,end是逻辑终点
//想知道删除了几个3
cout << "一共删除了几个3:" << distance(end, l.end()) <<endl;
//真正的删除
l.erase(end,l.end());//可以把remove写到这一行简化
print(l);
//remove所有的容器适用,,此外可以制定规则
l.erase(remove_if(l.begin(), l.end(),bind2nd(less<int>(),4)),l.end());//小于4的数据都被删除
print(l);
system("pause");
return 0;
}
删除-1-remove以及remove_if指定规则
最新推荐文章于 2022-04-07 13:36:09 发布