1. List 容器的基本概念

1. list 是一个双向链表容器,可高效的进行插入删除元素,他的原理在于每个元素都有两个指针来记录前后两个元素的地址,像火车车厢一样,list 中各个元素在物理存储单元上非连续,是通过指针相连在一起的。

2. 相较于vector的连续线性空间,list会显得复杂许多,他的好处是每次插入或者删除1个元素,就是配置或释放一个元素的空间。

3. list 不可以随机存取元素,所以不支持 at.(position)函数与[]操作符。可以对其迭代器执行++,但是不能这样操作迭代器:it + 3

4. list 采用动态内存分配,不会造成内存的浪费和溢出

5. 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素

2. list 构造函数

1 list<T> lstT;                  //list采用采用模板类实现,对象的默认构造形式
2 list(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身
3 list(n, elem); //构造函数将n个elem拷贝给本身
4 list(const list & lst); //拷贝构造函数

具体用法参考:STL——容器(List)List 的构造函数

3. list 的数据元素插入和删除操作

 1 push_back(elem);            //在容器尾部加入一个元素
2 pop_back(); //删除容器中最后一个元素
3 push_front(elem); //在容器开头插入一个元素
4 pop_front(); //从容器开头移除第一个元素
5 insert(pos, elem); //在pos位置插elem元素的拷贝,返回新数据的位置,是否有返回值是由编译器版本决定
6 insert(pos, n, elem); //在pos位置插入n个elem数据,返回新数据的位置,是否有返回值是由编译器版本决定
7 insert(pos, beg, end); //在pos位置插入[beg,end)区间的数据,返回新数据的位置,是否有返回值是由编译器版本决定
8 clear(); //移除容器的所有数据
9 erase(beg, end); //删除[beg,end)区间的数据,返回下一个数据的位置
10 erase(pos); //删除pos位置的数据,返回下一个数据的位置
11 remove(elem); //删除容器中所有与elem值匹配的元素

具体用法参考:STL——容器(List)List 的数据元素插入和删除操作

4. list 的迭代器

1 list.begin();        //返回容器中第一个元素的迭代器。
2 list.end(); //返回容器中最后一个元素之后的迭代器。
3 list.rbegin(); //返回容器中倒数第一个元素的迭代器。
4 list.rend(); //返回容器中倒数最后一个元素的后面的迭代器。
5 list.cbegin(); //返回容器中第一个元素的常量迭代器。
6 list.cend(); //返回容器中最后一个元素之后的常量迭代器。

具体用法参考:其他几个例子中均有迭代器的使用

5. list 的大小操作

1 size();                //返回容器中元素的个数
2 empty();    //判断容器是否为空
3 resize(num);   //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除
4 resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除

具体用法参考:STL——容器(List)list 的大小操作

6. list 的赋值操作

1 assign(beg, end);                        //将[beg, end)区间中的数据拷贝赋值给本身。
2 assign(n, elem); //将n个elem拷贝赋值给本身。
3 list & operator=(const list & lst); //重载等号操作符
4 swap(lst); //将lst与本身的元素互换。

具体用法参考:STL——容器(List)list 的赋值操作

7. list 数据的存取

1 front();      //返回第一个元素
2 back(); //返回最后一个元素

具体用法参考:STL——容器(List)list 数据的存取

8. list 翻转排序

1 reverse();            //反转链表,比如lst包含1,3,5元素,运行此方法后,lst就包含5,3,1元素
2 sort(); //list排序

具体用法参考:STL——容器(List)list 的反序排列

=====================================================================================================================

STL——容器(List)List 的概念的更多相关文章

  1. STL 容器的概念

    STL 容器的概念 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要. 经典的数据结构数量有限,但是我们 ...

  2. STL - 容器共性机制研究

    C++模板是容器的概念. 理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意.容器执行插入元素的操作时,内部实施拷贝动作.所以STL容器内存储的元素必须能够被拷贝(必 ...

  3. 关于STL容器

    容器: 概念:如果把数据看做物体,容器就是放置这些物体的器物,因为其内部结构不同,数据摆放的方式不同,取用的方式也不同,我们把他们抽象成不同的模板类,使用时去实例化它 分类: 序列容器.关联容器.容器 ...

  4. 【STL容器学习】-关联容器与map的用法

    STL提供了4个关联容器:set.multiset.map和multimap.这些容器提供了通过keyword高速存储和訪问数据元素的能力.Set和map不同意有反复keyword,而multiset ...

  5. 史上最全的各种C++ STL容器全解析

    史上最全的C++ STL 容器大礼包 为什么\(C++\)比\(C\)更受人欢迎呢?除了\(C++\) 的编译令人感到更舒适,\(C++\)的标准模板库(\(STL\))也占了很重要的原因.当你还在用 ...

  6. 标准非STL容器 : bitset

    1. 概念 什么是"标准非STL容器"?标准非STL容器是指"可以认为它们是容器,但是他们并不满足STL容器的所有要求".前文提到的容器适配器stack.que ...

  7. STL容器

    啦啦啦,今天听啦高年级学长讲的STL容器啦,发现有好多东西还是有必要记载的,毕竟学长是身经百战的,他在参加各种比赛的时候积累的经验可不是一天两天就能学来的,那个可是炒鸡有价值的啊,啊啊啊啊啊 #inc ...

  8. c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  9. STL容器删除元素的陷阱

    今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...

随机推荐

  1. (一)廖师兄springboot微信点餐SQL建表脚本

      数据库设计 数据库表之间的关系 类目表(product_category) 商品表(product_info) 订单主表(order_master) 订单详情表(order_detail) 卖家信 ...

  2. [LeetCode题解]142. 环形链表 II | 快慢指针

    解题思路 本题是在141. 环形链表基础上的拓展,如果存在环,要找出环的入口. 如何判断是否存在环,我们知道通过快慢指针,如果相遇就表示有环.那么如何找到入口呢? 如下图所示的链表: 当 fast 与 ...

  3. 信息收集之——旁站、C段

    旁站的概念 ​旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵.那么,可以查看该网站所在的服务器上是否还有其他网站.如果有其他网站的话,可以先拿下其他网站的webshell,然 ...

  4. weblogic ssrf 漏洞笔记

    CVE-2014-4210 Oracle WebLogic web server即可以被外部主机访问,同时也允许访问内部主机.比如有一个jsp页面SearchPublicReqistries.jsp, ...

  5. git设置个人信息

    git config --global user.name "username" 设置下自己提交的用户名 git config --global user.email " ...

  6. 深度分析:面试阿里,字节跳动,美团90%被问到的List集合,看完还不懂算我输

    1 List集合 1.1 List概述 在Collection中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素. 在List集合中,我们常用到Arr ...

  7. Running Median POJ - 3784

    本题使用对顶堆做法. 为了动态维护中位数,我们可以建立两个堆 :一个大根对,一个小根堆. 用法:在动态维护的过程中,设当前的长度为length,大根堆存从小到大排名 $1 \thicksim \dfr ...

  8. 技巧:如何区分dll程序集的编译目标平台(同样适用于查看程序集的其它依赖)

    我们在进行net core迁移过程中,有时候需要区分一个dll是针对netstandard平台还是net framework. 本文提供一个技巧来快速区分:通过工具dnSpy打开目标dll,按照如下截 ...

  9. sentinel整合dubbo

    <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-dubbo-a ...

  10. 【NOIP2015模拟11.2晚】JZOJ8月4日提高组T2 我的天

    [NOIP2015模拟11.2晚]JZOJ8月4日提高组T2 我的天 题目 很久很以前,有一个古老的村庄--xiba村,村子里生活着n+1个村民,但由于历届村长恐怖而且黑暗的魔法统治下,村民们各自过着 ...