8、泛型程序设计与c++标准模板库2.4列表容器
列表容器主要用于存放链表,其中的链表是双向链表,可以从任意一端开始遍历。列表容器是需要按顺序访问的容器。另外,列表容器不支持随机访问迭代器,因此某些算法不能适合于列表容器。列表容器还提供了另一种操作---拼接(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列表容器相关推荐
- Part10 泛型程序设计与C++标准模板库 10.1泛型程序设计及STL的结构
1泛型程序设计的基本概念 泛型程序设计: 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数 ...
- c++STL标准模板库(关联式容器(set,multiset容器))
关联式容器(associate容器)是STL提供的容器的一种,其中元素与序列容器不同的是它已经排过序,它主要通过关键字的方式来提高查询效率.关联式容器包含set.multiset.map.multim ...
- C++中标准模板库STL基本概念
0. 前言 C++语言的一大优势就是便于软件的重用,而重用体现在两方面: 1. 面向对象思想:继承和多态,标准类库 2. 泛程序设计(Generic Programming)思想:模板机制,标准模板库 ...
- C++ ——模板 标准模板库STL
C++ 知识基础 流操作符 类 & 基础 初始化和重载 类 & 高级 继承和多态 模板 & 标准模板库STL 目录 C++ 一.模板 1.函数模板 2.类模板 二.标准模板库S ...
- ###STL学习--标准模板库
下面进行STL的学习.希望能了解标准模板库中的常用容器,迭代器,可以自由运用STL以提高编写代码的效率.下面的内容我想以知识点为总结,不再像<Effective C++>那样以章节进行总结 ...
- c++ 的 stl模板库_C ++中的标准模板库(STL)
c++ 的 stl模板库 Standard Template Library (STL) is a collection of standard C++ template classes. It co ...
- C++的STL标准模板库思维导图
STL标准模板库思维导图 C++ 语言的核心优势之一就是便于软件的重用.C++ 中有两个方面体现重用: 一是面向对象的继承和多态机制: 二是通过模板的概念实现了对泛型程序设计的支持. C++ 的标准模 ...
- STL 标准模板库详细
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...
- C++ STL 标准模板库
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...
最新文章
- 微服务为什么一定要Zookeeper?
- Ubuntu16.04-LTS升级到18.04
- 10个适用于Java程序员的有用单元和集成测试工具
- The temporary upload location [/tmp/tomcat.xxx/work/Tomcat/localhost/etc] is not valid
- 解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?
- python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
- pip和conda的区别【转载】
- 用php循环星期一到星期日,php – 获取最后一个星期一 – 星期日的日期:有更好的方法吗?...
- Missing artifact com.sun:tools:jar:1.5.0解决的方法
- matlab中摄像机标定,基于Matlab的摄像机标定系统的设计与实现
- 神经网络学习笔记(1)——神经元与激活函数简介
- STM32LED--基于HAL库(LCD与LED冲突?一文看懂如何精准劝架)
- SpringBoot整合Minio实现文件上传、下载
- 工业物联网企业logo设计思路分析
- 信道容量迭代算法验证
- 《改进SIR 模型在社交网络信息传播中的应用》仿真实现
- 个人微信小程序快速赚攻略
- c0语言语法,《Groovy语言规范》-语法
- 物联网 嵌入式 单片机毕业设计题目100例
- 使用线性回归构建房价预测模型