remove()
remove_if()
remove_copy()
remove_copy_if()
unique()
unique_copy()
注意:
1, 并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素;
2,返回新的逻辑终点。
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
int main()
{
list<int> ilist;
for(int i = 1; i <= 6; i++)
{
ilist.push_front(i);//向前插入
ilist.push_back(i);// 向后插入
}
for(list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
remove(ilist.begin(), ilist.end(), 3);
for(list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
//
system("pause");
return 0;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
int main()
{
list<int> ilist;
for(int i = 1; i <= 6; i++)
{
ilist.push_front(i);//向前插入
ilist.push_back(i);// 向后插入
}
for(list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
list<int>::iterator end;
end = remove(ilist.begin(), ilist.end(), 3); // 返回最后一个的下一个
for(list<int>::iterator iter = ilist.begin(); iter != end; iter++)
cout<<*iter<<' ';
cout<<endl;
//
system("pause");
return 0;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
int main()
{
list<int> ilist;
for(int i = 1; i <= 6; i++)
{
ilist.push_front(i);//向前插入
ilist.push_back(i);// 向后插入
}
for(list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
list<int>::iterator end;
end = remove(ilist.begin(), ilist.end(), 3); // 返回最后一个的下一个
for(list<int>::iterator iter = ilist.begin(); iter != end; iter++)
cout<<*iter<<' ';
cout<<endl;
cout<<"一共删除了"<<distance(end, ilist.end())<<"个3!"<<endl;
// 真正的删除
ilist.erase(end, ilist.end());
for(list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
//
system("pause");
return 0;
}
#include<iostream>
#include<algorithm>
#include<list>
#include<vector>
#include<functional>
using namespace std;
int main()
{
list<int> ilist;
for(int i = 1; i <= 6; i++)
{
ilist.push_front(i);//向前插入
ilist.push_back(i);// 向后插入
}
for(list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
list<int>::iterator end;
end = remove(ilist.begin(), ilist.end(), 3); // 返回最后一个的下一个
for(list<int>::iterator iter = ilist.begin(); iter != end; iter++)
cout<<*iter<<' ';
cout<<endl;
cout<<"一共删除了"<<distance(end, ilist.end())<<"个3!"<<endl;
// 真正的删除
ilist.erase(end, ilist.end());
for(list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
vector<int> ivec;
for(int i = 2; i <= 6; i++)
ivec.push_back(i);
for(int i = 4; i <= 9; i++)
ivec.push_back(i);
for(int i = 1; i <= 7; i++)
ivec.push_back(i);
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
// 逻辑删除
//remove(ivec.begin(), ivec.end(), 5);
// 真正的删除
ivec.erase(remove(ivec.begin(), ivec.end(), 5), ivec.end());
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
ivec.erase(remove_if(ivec.begin(), ivec.end(), bind2nd(less<int>(), 4)), ivec.end());
for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)
cout<<*iter<<' ';
cout<<endl;
//
system("pause");
return 0;
}