【STL】11 list容器操作
#include<iostream>
#include<list>
using namespace std;
void test01(){
list<int> mlist1;
list<int> mlist2(10,10); //有参构造
list<int> mlist3(mlist2); //拷贝构造
list<int> mlist4(mlist3.begin(),mlist3.end());
for(list<int>::iterator i = mlist4.begin();i!=mlist4.end();i++)
cout<<*i<<" ";
cout<<endl;
}
void test02(){
list<int> mlist;
mlist.push_back(1);
mlist.push_back(2);
mlist.insert(mlist.begin(),3); //在链头插入元素
mlist.insert(mlist.end(),4); //在链尾插入元素
list<int>::iterator i = mlist.begin();
i++;
i++;
mlist.insert(i,6); //在第2个位置插入元素
//打印
for(i=mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
//删除
mlist.pop_back(); //删除链尾元素
mlist.pop_front(); //删除链头元素
//mlist.erase(mlist.begin(),mlist.end());
//打印
for(i=mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
mlist.remove(1);//删除匹配所有值
//打印
for(i=mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
}
//赋值操作
void test03(){
list<int> mlist1;
mlist1.assign(10,10);
list<int> mlist2 = mlist1;
mlist2.swap(mlist1);
}
//反转
void test04(){
list<int> mlist;
for(int i=0;i<10;i++)
mlist.push_back(i);
//打印
for(list<int>::iterator i = mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
//反转 操作
mlist.reverse();
//打印
for(list<int>::iterator i = mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
}
bool MyCompare(int v1,int v2){
return v1 > v2;
}
//排序
void test05(){
list<int> mlist;
mlist.push_back(5);
mlist.push_back(3);
mlist.push_back(1);
mlist.push_back(2);
mlist.push_back(4);
//打印
for(list<int>::iterator i = mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
//排序(从小到大)
mlist.sort(); //这是专属于list的成员方法
//算法 sort 支持可随机访问的容器
//但list不支持随机访问,所以list容器有一个专属的sort,迭代器只能++操作
//打印
for(list<int>::iterator i = mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
//排序(从大到小)
mlist.sort(MyCompare);
//打印
for(list<int>::iterator i = mlist.begin();i!=mlist.end();i++)
cout<<*i<<" ";
cout<<endl;
}
int main(){
test01();
test02();
test03();
test04();
test05();
return 0;
}