列表容器主要用于存放链表,其中的链表是双向链表,可以从任意一端开始遍历。列表容器是需要按顺序访问的容器。另外,列表容器不支持随机访问迭代器,因此某些算法不能适合于列表容器。列表容器还提供了另一种操作---拼接(splicing),其作用是将一个序列中的元素插入到另一个序列中。其头文件为<list>

1、列表容器的构造函数

4种形式的构造函数:

list();//构造size()为0的列表容器

list(sizt_type n,const T& v=T());//初始化一个大小为n的列表容器,把列表容器中的每个对象初始化为T()构造的对象

list(const list& x);//按另一个列表容器x初始化列表

list(const_iterator first,const_iterator last);//从另一个支持const_iterator的容器中选取一部分来建立一个新的列表容器

2、使用列表容器

1)访问列表容器信息

有如下函数可以使用:begin()、end()、rbegin()、rend()、size()、max_size()、empty()、front()和back()等

2)向列表容器中放置元素

与向量和双端队列容器一样,也有insert函数,但是不同的是,列表容器的insert函数不会使任何迭代器或引用变得无效。

列表容器中的拼接函数splice函数就是用来重组列表的,其原型如下:

void splice(iterator it,list& x);//将列表x中的元素插入到当前列表中it之前,删除x中的元素,使之为空;注意x与当前列表不能是同一个。

void splice(iterator it,list& x,iterator first);//将first所指向的元素从列表x中移出,并插入到当前列表中it之前,x与当前列表可以是同一个,如果it==first或it==++first,则次函数什么也不做。

void splice(iterator it,list& x,iterator first,iterator last);//将范围[first,last]中的元素从列表x中移出,并插入到当前列表中it之前,x与当前列表可以是同一个,这是范围[first,last]不能包含it所指的元素

3)删除列表容器中的元素

与向量和双端队列容器一样,列表容器也提供了erase()成员函数,但是该函数仅删除指向被删除元素的迭代器和引用,另外,列表容器的成员函数remove()可以从列表容器中删除与x相等的元素,同时会减小列表容器的大小,其减小的数量等于被删除的元素个数,原型如下:

void remove(const T& x);//删除与x相同的元素

4)例子

#include<iostream>

#include<list>

using namespace std;

int main()

{

list<int> link;//构造一个列表用于存放整数链表

int i, key, item;

for (i = 0; i < 10; i++)//输入10个整数依次向表头插入

{   cin >> item;

link.push_front(item);

}

cout << "List:";//输出链表

list<int>::iterator p = link.begin();//迭代器p用于遍历链表

while (p!=link.end())

{

cout << *p << " ";

p++;//使p指向下一个结点

}

cout << endl;

cout << "请输入一个需要删除的整数:";//输入需要删除的整数

cin >> key;

link.remove(key);

cout << "List:";//输出链表

p = link.begin();//使p重新指向表头

while (p != link.end())//输出各结点数据,直到链表尾

{   cout << *p << " ";   p++;  }

getchar();

getchar();

cout << endl;

}

转载于:https://www.cnblogs.com/gary-guo/p/6322258.html

8、泛型程序设计与c++标准模板库2.4列表容器相关推荐

  1. Part10 泛型程序设计与C++标准模板库 10.1泛型程序设计及STL的结构

    1泛型程序设计的基本概念 泛型程序设计: 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数 ...

  2. c++STL标准模板库(关联式容器(set,multiset容器))

    关联式容器(associate容器)是STL提供的容器的一种,其中元素与序列容器不同的是它已经排过序,它主要通过关键字的方式来提高查询效率.关联式容器包含set.multiset.map.multim ...

  3. C++中标准模板库STL基本概念

    0. 前言 C++语言的一大优势就是便于软件的重用,而重用体现在两方面: 1. 面向对象思想:继承和多态,标准类库 2. 泛程序设计(Generic Programming)思想:模板机制,标准模板库 ...

  4. C++ ——模板 标准模板库STL

    C++ 知识基础 流操作符 类 & 基础 初始化和重载 类 & 高级 继承和多态 模板 & 标准模板库STL 目录 C++ 一.模板 1.函数模板 2.类模板 二.标准模板库S ...

  5. ###STL学习--标准模板库

    下面进行STL的学习.希望能了解标准模板库中的常用容器,迭代器,可以自由运用STL以提高编写代码的效率.下面的内容我想以知识点为总结,不再像<Effective C++>那样以章节进行总结 ...

  6. c++ 的 stl模板库_C ++中的标准模板库(STL)

    c++ 的 stl模板库 Standard Template Library (STL) is a collection of standard C++ template classes. It co ...

  7. C++的STL标准模板库思维导图

    STL标准模板库思维导图 C++ 语言的核心优势之一就是便于软件的重用.C++ 中有两个方面体现重用: 一是面向对象的继承和多态机制: 二是通过模板的概念实现了对泛型程序设计的支持. C++ 的标准模 ...

  8. STL 标准模板库详细

    STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...

  9. C++ STL 标准模板库

    STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...

最新文章

  1. 微服务为什么一定要Zookeeper?
  2. Ubuntu16.04-LTS升级到18.04
  3. 10个适用于Java程序员的有用单元和集成测试工具
  4. The temporary upload location [/tmp/tomcat.xxx/work/Tomcat/localhost/etc] is not valid
  5. 解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?
  6. python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
  7. pip和conda的区别【转载】
  8. 用php循环星期一到星期日,php – 获取最后一个星期一 – 星期日的日期:有更好的方法吗?...
  9. Missing artifact com.sun:tools:jar:1.5.0解决的方法
  10. matlab中摄像机标定,基于Matlab的摄像机标定系统的设计与实现
  11. 神经网络学习笔记(1)——神经元与激活函数简介
  12. STM32LED--基于HAL库(LCD与LED冲突?一文看懂如何精准劝架)
  13. SpringBoot整合Minio实现文件上传、下载
  14. 工业物联网企业logo设计思路分析
  15. 信道容量迭代算法验证
  16. 《改进SIR 模型在社交网络信息传播中的应用》仿真实现
  17. 个人微信小程序快速赚攻略
  18. c0语言语法,《Groovy语言规范》-语法
  19. 物联网 嵌入式 单片机毕业设计题目100例
  20. 使用线性回归构建房价预测模型

热门文章

  1. javaweb使用 数据库连接池 DBCP,实现对数据库驱动使用优化,多个 action共用一个数据库连接
  2. vim配置及插件安装管理
  3. 关于中断的一点点认识
  4. [攻防世界 pwn]——pwn-100
  5. 使用 Apache Commons CLI 开发命令行工具
  6. Python生成Windows可执行exe文件
  7. yii框架下使用redis
  8. 知识图谱基础知识之一——人人都能理解的知识图谱
  9. kafka系列九、kafka事务原理、事务API和使用场景
  10. spring boot:创建一个简单的web(maven web project)