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. bWAPP----SQL Injection (GET/Search)

    SQL Injection (GET/Search) 输入单引号 报错,在%'附近出错,猜测参数被 '%  %'这种形式包裹,没有任何过滤,直接带入了数据库查询 输入order by查询列 union ...

  2. 关于AOP思想,建议你看看这份五年开发总结的笔记,写的太详细了

    前言 OOP(Object Oriented Programing)面向对象编程 以对象为基本单位进行程序开发,通过对象间的彼此协同,相互协调,完成程序的构建 POP(Producer Oriente ...

  3. Mac系统应该用什么软件进行清理?

    作为一枚资深的Windows系统使用者,小编刚刚转向Mac系统的怀抱时,各种不适应,Windows系统中普遍使用的360清理软件目前暂时没有Mac版本的,这就让小编很是头疼了,大家的Mac都是用的什么 ...

  4. 使用Camtasia来消除视频中的声音

    大多数情况下,我们在录制电脑屏幕的时候都会把音频输出也一起录制下来,但也会有时候要后期进行重新配音,需要把事先一同录制的音频消除掉,今天小编来给大家说一说如何消除这种的视频声音. 首先打开Camtas ...

  5. Linux中redis服务开启docker运行redis并设置密码

    //查询目前可用的reids镜像 docker search redis //选择拉取官网的镜像 docker pull redis //查看本地是否有redis镜像 docker images // ...

  6. JUC详解--【Foam番茄】

    1.什么是JUC java.util 工具包 业务:普通的线程代码 Thread Runnable 没有返回值,效率相比于 Callable 相对较低! 2.线程和进程 进程:一个程序,QQ.exe ...

  7. vue微博回调空页面

    1.vue微博回调空页面 注:微博回调空页面为:http://127.0.0.1:8888/oauth/callback/ 1.1 页面路径 components\oauth.vue <temp ...

  8. Java安全之JNI绕过RASP

    Java安全之JNI绕过RASP 0x00 前言 前面一直想看该JNI的相关内容,但是发现JNI的资料还是偏少.后面发现JNI在安全中应用非常的微妙,有意思. 0x01 JNI概述 JNI的全称叫做( ...

  9. Java数据结构(十三)—— 二叉排序树(BST)

    二叉排序树(BST) 需求 给定数列{7,3,10,12,5,1,9},要求能够高效的完成对数据的查询和添加 思路三则 使用数组,缺点:插入和排序速度较慢 链式存储,添加较快,但查找速度慢 使用二叉排 ...

  10. 第8.19节 使用__doc__访问Python文档字符串(DocStrings )

    __doc__特殊变量用于查看类.函数.模块的帮助信息,这些帮助信息存放在文档字符串中. 一. 关于文档字符串 关于文档字符串前面很多章节提到过,DocStrings 文档字符串用于程序的文档说明,并 ...