List详解
List详解:
#include <iostream> #include <list> using namespace std; int main () { //构造函数 int v_b[10]={1,2,3,4,5,6}; list<int> list_b(v_b,v_b+10); list<int> list_b(100,1); // 100个值为1的元素 return 0;
list<int> list_a; int a,b,c,d; int v_a[10]={1,2,3,4}; scanf("%d%d%d%d",&a,&b,&c,&d); list_a.push_back(a); list_a.push_front(b); cout<<list_a.front()<<" "<<list_a.back()<<endl; list_a.pop_front(); list_a.pop_back(); cout<<list_a.size()<<endl; list_a.insert(list_a.begin(),v_a+1,v_a+3); cout<<list_a.size(); for(list<int>::iterator it=list_a.begin();it!=list_a.end();it++) cout<<*it<<" "; cout<<endl; list_a.erase(list_a.begin(),list_a.end()); for(list<int>::iterator it=list_a.begin();it!=list_a.end();it++) cout<<*it<<" "; cout<<endl; //基本成员函数
list<int> list_c(10,1),list_d(10,2);//没有等于号 list_c.push_back(100); list_c.push_front(100); list_d.merge(list_c); for(list<int>::iterator it=list_d.begin();it!=list_d.end();it++) cout<<*it<<" "; cout<<endl; for(list<int>::iterator it=list_c.begin();it!=list_c.end();it++) cout<<*it<<" "; //merge合并 若A,B为有序,C也为有序,若A,B为无序,C也为无序,llistb完后为空
list<int> list_e(10,1); list_e.remove(1); for(list<int>::iterator it=list_e.begin();it!=list_e.end();it++) cout<<*it<<" "; //remove删除 O(1) 删除 .remove(2) 把二全删除
list<int> list_f(10,1),list_g(10,2); list_f.splice(list_f.begin(),list_g); for(list<int>::iterator it=list_f.begin();it!=list_f.end();it++) cout<<*it<<" "; //splice链表插入 位置需要指针,迭代器只能++,--, 不能直接+1等常数
list<int> list_h(10,1); list_h.unique(); for(list<int>::iterator it=list_h.begin();it!=list_h.end();it++) cout<<*it<<" "; //unique连续元素压缩为单个元素,将其删除,大小减小