#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+10;
bool cmp(int x,int y){
return x>y;
}
signed main(){
list<int>lst;//建立
for(int i=1;i<=6;i++){
lst.push_back(i);
}//尾插
for(int i=10;i>=8;i--){
lst.push_front(i);
}//头插
cout<<lst.size()<<endl;//尺寸
lst.resize(1);//更改尺寸
for(auto i:lst){
cout<<i<<' ';
}//发现减小尺寸之后只保留第一个,其余全部丢失
cout<<endl;
lst.resize(8);
for(auto i:lst){
cout<<i<<' ';
}
cout<<endl;//发现扩大尺寸之后新的部分填充为0
int a[6]={00,22,11,33,44,55};
list<int>la(a+1,a+3);//开始的位置 结束的下一个(左闭右开
for(auto i:la){
cout<<i<<' ';
}
cout<<endl;//用数组进行初始化list
lst.insert(++++++lst.begin(),2);// 任意位置插入一个元素 ++往后推一个
for(auto i:lst){
cout<<i<<' ';
}
cout<<endl;
swap(lst,la);//交换两个同类型容器的元素
for(auto i:lst){
cout<<i<<' ';
}
cout<<endl;
la.unique();//删除容器中相邻的重复元素
for(auto i:la){
cout<<i<<' ';
}
cout<<endl;
cout<<la.size()<<endl;
list<int>ll1;
for(int i=1;i<=10;i++)ll1.push_back(i);
list<int>ll2;
for(int i=-6;i<=2;i++)ll2.push_back(i);
ll1.merge(ll2,cmp);//合并2个有序的链表并使之有序,从新放到lst里,释放la。
//如果cmp函数与这两个链表的排序方式不同或链表无序,会直接简单拼接
for(auto i:ll1){
cout<<i<<' ';
}
cout<<endl;
cout<<ll2.size()<<endl;
list<int>ls{0,1,4,8};
list<int>lls{9,8,7,55};
ls.splice(ls.end(),lls); // 将c2连接在c1的beg位置,释放c2
for(auto i:ls){
cout<<i<<' ';
}
cout<<endl;
list<int>re(ls);//直接用链表初始化链表
for(auto i:re){
cout<<i<<' ';
}
cout<<endl;
re.reverse();//指定链表的反转
for(auto i:re){
cout<<i<<' ';
}
cout<<endl;
}