STL中的序列式容器——list(列表)

list是列表类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
list 是C++ STL的一个重要成员,使用它时需要包含头文件:

#include <list>;

list的优势在于在任何位置执行插入和删除动作都非常迅速,因为改变的仅仅是链接。

一、list 的初始化

有以下方式,举例说明如下:

list<int> listname;
list<int> listname(5);
list<int> listname(5,1);//包含5个元素1的列表
list<int> listname(elselist);
list<int> listname(elselist.begin(),elselist.end());
int b[7]={1,2,3,4,5,9,8};list<int> a(b,b+7); //从数组中获得初值

二、list 对象的重要操作

列举如下:

a.assign(b.begin(), b.begin()+3); //b为列表,将b的0~2个元素构成的列表赋给a
a.assign(4,2); //是a只含4个元素,且每个元素为2
a.back(); //返回a的最后一个元素
a.front(); //返回a的第一个元素
a.clear(); //清空a中的元素
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+ 3(不包括它)
a.push_back(5);//在a的最后一个列表后插入一个元素,其值为5
a.push_front(5);//在a的最前一个列表前插入一个元素,其值为5
a.pop_front();//从容器的首部移走数据
a.pop_back();//从容器的尾部移走数据
a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8 ,插入元素后为1,4,5,9,2,3,4,5,9,8
a.remove(5); //从list中删除元素5
a.merge(b); //调用结束后b变为空,a中元素包含原来a和b的元素
a.size(); //返回a中元素的个数
a.max_size(); //返回最大容量
a.reverse(); //可以实现a的逆置
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
a.swap(b); //将a中的元素和b中的元素进行整体性交换
a.sort(); //默认从小到大进行排序
a.sort(greater<int>()); //从大到小排序
a.unique(); //移除list中相邻的重复元素,只保留一个
a.splice(); //将其他list合并到a
//如,将elselist整个列表合并到mylist的后面,此时elselist变为空
//mylist.splice(mylist.end(),elselist)
//如,将将elselist的第一个元素合并到mylist后面,此时elselist减少一个元素
//mylist.splice(mylist.end(),elselist,elselist.begin())
//如,将elselist的迭代器区间的元素合并到mylist,此时elselist减少响应的区间元素:
//mylist.splice(mylist.end(),elselist,elselist.begin(),elselist.end())
a==b; //列表的比较操作还有!=,>=,<=,>,<

三、顺序访问 vector 的方式

举例说明如下:

//列表a中添加元素
list<int> a;
for(int i=0;i<10;i++)
a.push_back(i);//也可以从数组中选择元素向列表中添加
int a[6]={1,2,3,4,5,6};
list<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);//也可以从现有向量中选择元素向列表中添加
int a[6]={1,2,3,4,5,6};
list<int> b;
list<int> c(a,a+4);
for(list<int>::iterator it=c.begin();it<c.end();it++)
b.push_back(*it);//也可以从文件中读取元素向列表中添加
ifstream in("data.txt");
list<int> a;
for(int i; in>>i)
a.push_back(i);

STL中的序列式容器——list(列表)相关推荐

  1. C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set

    目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...

  2. C++ STL : 模拟实现STL中的关联式容器map和set

    目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...

  3. C++ STL容器——序列式容器(array、vector、deque、list)

    概述 1.C++ STL的容器分为三种,序列式容器,关联式容器,无序式容器,这里先说说常用的序列式容器. 2.array,vector,deque,list,forward_list这几种都是序列式容 ...

  4. STL源码剖析 序列式容器|Vector

    容器的概观和分类 array 数组 .list 链表.tree树 .stack堆栈.queue队列.hash table散列表.set集合.map映射表 根据数据在容器中的排列顺序,将上述数据结构分为 ...

  5. STL序列式容器Standard Template Library Sequence Container

    STL序列式容器 STL Sequence Container 目录 STL序列式容器 STL Sequence Container STL(Standard Template Library)概述 ...

  6. 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)

    文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...

  7. 容器大小_C++复习篇(7)序列式容器vector

    点击蓝字 关注我们 主要内容 本篇内容主要介绍STL六大组件之一的序列式容器(vector),容器其实就是各种数据结构:另外,迭代器部分的内容可以看看<STL源码剖析>,它的的主要作用是作 ...

  8. 第四章 序列式容器(sequence containers)

    序列式容器(sequence containers) 1.容器的概观与分类 2.vector 3.list 4.deque 5.stack 6.queue 7.heap(隐私表述,implicit r ...

  9. C++基本序列式容器 vector (一)

    我们以 vector.deque 和 list 为例介绍基本序列式容器,先来看一个关于 vector 容器的例子. #include <iostream> #include <vec ...

  10. STL之序列式容器(五)、list容器

    一.list(STL list)使用.创建和初始化 list<T> 容器模板定义在 list 头文件中,是 T 类型对象的双向链表. list 容器具有一些 vector 和 deque ...

最新文章

  1. 基因对智力的预测能力不到7%,别迷信它
  2. 检察机关计算机涉密案例,三原县检察院:扎实做好新时代检察机关保密工作
  3. 相似度矩阵遍历 python
  4. 盘点上班族和大学生都适用的8个赚外快的小方法 总有一个适合你
  5. pyqt5教程11:绘制外观
  6. C# HttpWebRequest提交数据方式
  7. 对于人工智能的学习有哪些建议?【转】
  8. CCtalk高可用多媒体服务技术选型与实现
  9. 手机服务器共享信息,手机云共享服务器
  10. .NET Framework第一二课(7/26、27)
  11. ceph存储原理_Java实战教程:【原理剖析】K8S存储原理剖析与实战
  12. c++代码格式化工具神器AStyle介绍
  13. 软件安全测试之系统安全测试,软件安全测试报告模板.docx
  14. tampermonkey这玩意如何替换flash播放器为h5播放器?
  15. 汽车电子(一)--- 整车CAN网络介绍
  16. ps怎样裁剪html网页,Photoshop另类实用技巧:切网页
  17. UVA 12307 Smallest Enclosing Rectangle
  18. NOI2021 D类打铁记
  19. 油田生产数据选取22.4.1 观察实验
  20. US-016超声波测距模块

热门文章

  1. 配置多个git账号_git配置账号(用户名/邮箱)
  2. 超英文邮件50%!Flink 中文邮件列表必须有姓名
  3. 我与潘家园金爷的对话
  4. html盒子中盒子排列,解析CSS的box model盒模型及其内的子元素布局控制
  5. MySQL报错113_连接 MySQL 报错'NoneType' object has no attribute '__getitem__'
  6. java读取csv文件忽略bom头_PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法...
  7. uefi能重置系统吗_无惧UEFI, Win10也能玩转一键自动还原
  8. tortoise清理本地分支_使用TortorliseGit(小乌龟)删除本地分支,远程分支
  9. vsbutton中的集合编辑器怎么打开_理工科学生的好帮手,EdrawMath数学公式编辑器...
  10. 构建安全可控的网络环境,国产化网管势在必行