list自己定义了sort(),unique(),可以不用algorithm的sort和unique了。
对比请看我的博客《c++容器算法》
粘接,排序,归并
void splice(iterator pos,list& x);
void splice(iterator pos,list& x,iterator p);
void splice(iterator pos,list& x,iterator first,iterator last ;
void merge(list& );
template<typename Cmp>
void merge(list&,Cmp);
void sort();
template<typename Cmp>
void sort(Cmp);
前端操作:
reference front();
const_reference front() const;
void push_front(const T&);
void pop_front();
其他操作:
void remove(const T& val);
template<typename T>
void remove_if(T t);
void unique();
template<typename T>
void unique(T t)
void reverse();
代码参考:
#include<iostream>
#include<string>
#include<list>
using namespace std;
int main(){
list<string>l;
l.push_back("d");
l.push_back("e");
l.push_back("c");
l.push_back("a");
l.push_back("b");
l.push_back("c");
l.push_back("d");
l.push_back("f");
for(list<string>::iterator iter=l.begin();iter!=l.end();++iter){
cout<<*iter<<" ";
}
l.sort();
cout<<endl;
for(list<string>::iterator it=l.begin();it!=l.end();++it){
cout<<*it<<" ";
}
cout<<endl;
l.unique();
for(list<string>::iterator ite=l.begin();ite!=l.end();++ite){
cout<<*ite<<" ";
}
cout<<endl;
system("pause");
return 0;
}
![](https://img-my.csdn.net/uploads/201207/21/1342839652_4790.jpg)
#include<iostream>
#include<string>
#include<list>
using namespace std;
int main(){
list<string>l;
l.push_back("d");
l.push_back("e");
l.push_back("c");
l.push_back("a");
l.push_back("b");
l.push_back("c");
l.push_back("d");
l.push_back("f");
list<string>ll;
ll.push_back("1");
ll.push_back("3");
ll.push_back("2");
ll.push_back("4");
ll.push_back("1");
ll.push_back("6");
ll.push_back("5");
ll.push_back("2");
l.sort();
ll.sort();
l.merge(ll);
for(list<string>::iterator iter=l.begin();iter!=l.end();++iter){
cout<<*iter<<" ";
}
cout<<endl;
for(list<string>::iterator ite=ll.begin();ite!=ll.end();++ite){//为空
cout<<*ite<<" ";
}
cout<<endl;
system("pause");
return 0;
}
![](https://img-my.csdn.net/uploads/201207/21/1342839656_8107.jpg)
#include<list>
#include<string>
using namespace std;
int main(){
list<string>l;
l.push_back("1");
l.push_back("2");
l.push_back("3");
list<string>::iterator iter=l.erase(l.begin());
for(list<string>::iterator it=l.begin();it!=l.end();++it){
cout<<*it<<" ";
}
cout<<endl;
l.remove("2");
for(list<string>::iterator iet=l.begin();iet!=l.end();++iet){
cout<<*iet<<" ";
}
cout<<endl;
system("pause");
return 0;
}
![](https://img-my.csdn.net/uploads/201207/21/1342839660_3876.jpg)
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
void printlist(const list<int>& l1,const list<int>& l2){
cout<<"list1:";
copy(l1.begin(),l1.end(),ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"list2:";
copy(l2.begin(),l2.end(),ostream_iterator<int>(cout," "));
cout<<endl;
}
int main(){
list<int>list1,list2;
for(int i=0;i<6;++i){
list1.push_back(i);
list2.push_front(i);
}
printlist(list1,list2);
list2.splice(find(list2.begin(),list2.end(),3),list1);
printlist(list1,list2);
list2.splice(list2.end(),list2,list2.begin());
printlist(list1,list2);
list2.sort();
list1=list2;
list2.unique();
printlist(list1,list2);
list1.merge(list2);
printlist(list1,list2);
system("pause");
return 0;
}