STL中的序列式容器——list(列表)
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(列表)相关推荐
- C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set
目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...
- C++ STL : 模拟实现STL中的关联式容器map和set
目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...
- C++ STL容器——序列式容器(array、vector、deque、list)
概述 1.C++ STL的容器分为三种,序列式容器,关联式容器,无序式容器,这里先说说常用的序列式容器. 2.array,vector,deque,list,forward_list这几种都是序列式容 ...
- STL源码剖析 序列式容器|Vector
容器的概观和分类 array 数组 .list 链表.tree树 .stack堆栈.queue队列.hash table散列表.set集合.map映射表 根据数据在容器中的排列顺序,将上述数据结构分为 ...
- STL序列式容器Standard Template Library Sequence Container
STL序列式容器 STL Sequence Container 目录 STL序列式容器 STL Sequence Container STL(Standard Template Library)概述 ...
- 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)
文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...
- 容器大小_C++复习篇(7)序列式容器vector
点击蓝字 关注我们 主要内容 本篇内容主要介绍STL六大组件之一的序列式容器(vector),容器其实就是各种数据结构:另外,迭代器部分的内容可以看看<STL源码剖析>,它的的主要作用是作 ...
- 第四章 序列式容器(sequence containers)
序列式容器(sequence containers) 1.容器的概观与分类 2.vector 3.list 4.deque 5.stack 6.queue 7.heap(隐私表述,implicit r ...
- C++基本序列式容器 vector (一)
我们以 vector.deque 和 list 为例介绍基本序列式容器,先来看一个关于 vector 容器的例子. #include <iostream> #include <vec ...
- STL之序列式容器(五)、list容器
一.list(STL list)使用.创建和初始化 list<T> 容器模板定义在 list 头文件中,是 T 类型对象的双向链表. list 容器具有一些 vector 和 deque ...
最新文章
- 基因对智力的预测能力不到7%,别迷信它
- 检察机关计算机涉密案例,三原县检察院:扎实做好新时代检察机关保密工作
- 相似度矩阵遍历 python
- 盘点上班族和大学生都适用的8个赚外快的小方法 总有一个适合你
- pyqt5教程11:绘制外观
- C# HttpWebRequest提交数据方式
- 对于人工智能的学习有哪些建议?【转】
- CCtalk高可用多媒体服务技术选型与实现
- 手机服务器共享信息,手机云共享服务器
- .NET Framework第一二课(7/26、27)
- ceph存储原理_Java实战教程:【原理剖析】K8S存储原理剖析与实战
- c++代码格式化工具神器AStyle介绍
- 软件安全测试之系统安全测试,软件安全测试报告模板.docx
- tampermonkey这玩意如何替换flash播放器为h5播放器?
- 汽车电子(一)--- 整车CAN网络介绍
- ps怎样裁剪html网页,Photoshop另类实用技巧:切网页
- UVA 12307 Smallest Enclosing Rectangle
- NOI2021 D类打铁记
- 油田生产数据选取22.4.1 观察实验
- US-016超声波测距模块
热门文章
- 配置多个git账号_git配置账号(用户名/邮箱)
- 超英文邮件50%!Flink 中文邮件列表必须有姓名
- 我与潘家园金爷的对话
- html盒子中盒子排列,解析CSS的box model盒模型及其内的子元素布局控制
- MySQL报错113_连接 MySQL 报错'NoneType' object has no attribute '__getitem__'
- java读取csv文件忽略bom头_PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法...
- uefi能重置系统吗_无惧UEFI, Win10也能玩转一键自动还原
- tortoise清理本地分支_使用TortorliseGit(小乌龟)删除本地分支,远程分支
- vsbutton中的集合编辑器怎么打开_理工科学生的好帮手,EdrawMath数学公式编辑器...
- 构建安全可控的网络环境,国产化网管势在必行