list详解

简述:

  list是stl的一个容器,本质上就是一个双向链表,能够支持O(1)的插入和删除。但list的查找却是O(n),无法用二分优化,因为list的存取方式不是随机存取,所以也就没有find函数了。

 

定义:

list<int> li;
list<int>::iterator it;

 

常见操作:

(1)容量

•li.size();                容器内数量

•li.empty();             判空

•li.clear();               清空

•li.resize(n);           重新定义list,超出部分用0代替

•li.resize(n,num);   重新定义list,超出部分用num代替

 

(2)返回信息

•li.front();       返回链首第一个元素

•li.back();    返回链位第一个元素

•li.begin();     返回链首迭代器

•li.end();     返回链尾迭代器

 

(3)操作

•li.push_back(x);            在链尾插入x

•li.pop_back();         链尾元素出链

•li.push_front(x);           在链头插入x

•li.pop_front();            链头元素出链

•li.erase(pos); 删除pos位置的元素,会使迭代器失效,会返回下一位置迭代器

•li.remove(x);        删除链表中匹配x的元素

•li.unque();         在相邻元素中去重

•li.reverse();          翻转链表

•li.insert(pos,x);          在pos位置插入元素x 

•li.insert(pos,n,x);       在pos位置插入n个x

•li.insert(pos,beg,end);      在pos位置插入另一容器beg到end位置的元素

•li.merge(li2);        将li2的元素放到li里并排序

•li.splice(pos,li2);        将li2的元素衔接到li的pos位置       

•c1.splice(c1.beg,c2,c2.beg,c2.end)将c2的[beg,end)位置的元素连接到c1的beg位置并且释放c2的[beg,end)位置的元素

 

posted @ 2020-03-13 21:34  艾尔夏尔-Layton  阅读(258)  评论(0编辑  收藏  举报