容器总结——list、forward list
来源:互联网 发布:疯狂挂机赚钱软件 编辑:程序博客网 时间:2024/04/28 00:41
List #include<list>
使用doubly linked list管理元素
特性:
List自身提供两个pointer指向第一个和最后一个元素,每个元素有两个pointer指向前一个和后一个元素,安插元素只需操作相应的pointer即可。
与前三个容器不同:
不支持随机访问,访问任意元素很缓慢,可以从两端开始航行整个list
任何位置的安插都很快,常量时间
安插和删除元素并不会使reference、pointer、iterator失效
对异常要么成功要么不发生
List提供的成员函数:
front()、push_front()、pop_front()、push_back()、pop_back()、back()
不支持随机访问,不提供 [ ]、和at()
没有必要重新分配内存
提供了不少特殊成员函数,用于移动和删除元素,比STL通用算法快,因为只需调整pointer即可
List的操作
创建复制销毁、非更易操作、赋值操作没有特殊。
元素访问
Range-based for、操作函数、迭代器。
不支持随机访问,只有front()、back()可以直接访问
对空容器任何操作导致不明确行为
迭代器相关函数
只有运用迭代器才能访问list中各个元素,提供双向迭代器,反向迭代器,用到随机访问迭代器的算法(操作元素顺序的算法、排序算法)都不能处理list,但是list提供特殊成员函数sort()
安插和移除
提供deque的所有功能,还增加了remove()、remove_if()算法的特殊版本。速度更快,只进行内部pointer操作,不改变元素。
保证:1.迭代器必须指向一个合法位置2.区间的其实位置不能在位置结束之后
安插多个元素时调用一次更快
操作函数不会造成iterator和reference失效。
异常处理
STL所有容器中,List对于异常的安全性提供了最佳支持。
List特殊更易操作:P297(区别于一般算法)
Foeward list #include<forward_list>
List的操作
创建复制销毁操作没有特殊。
非更易操作
不提供.size()操作,不存储元素的数目,无法在常量时间计算他。计算元素个数可以用distance()(应用广泛),具有线性复杂度,需要#include<iterator>
赋值
序列式容器都有的赋值操作
元素访问
Range-based for、操作函数、迭代器。
不支持随机访问,只有front()可以直接访问
对空容器任何操作导致不明确行为
迭代器相关函数
运用迭代器才能访问list中各个元素,提供双向迭代器(表示不解)、单向迭代器
无法调用双向或随机迭代器的算法,所有大量改变元素次序的算法特别是sort算法都是此类。Forward list提供了特殊成员函数sort()
此外提供.befor_begin()、.cbefor_begin()为了改动第一个元素,不能将.befor_begin()作STL任何算法的第一实参。
安插和删除
保证:1.迭代器必须指向一个合法位置2.区间的其实位置不能在位置结束之后
安插多个元素时调用一次更快
提供remove()、remove_if()算法的特殊版本。速度更快,只进行内部pointer操作,不改变元素。
对于forward list,无法回头,与list不同,后缀_after安插或删除在给定元素之后P306
查找移除和安插
查找准则应该是下一个满足条件的当时元素,用两个迭代器或者用便捷函数next()。
可以定义自己的算法,找出拥有特定值得元素的前一位置。
接合函数
与list一样可以在常量时间内移除和安插元素于任何位置,只需重定位pointer即可forward List特殊更易操作:P310(区别于一般算法)
异常处理
- 容器总结——list、forward list
- list容器总结
- c++容器——list
- STL容器总结之list
- java容器 -- list的总结
- STL容器总结之list
- forward list源码
- c++标准库——list容器
- STL容器(一)——List
- list——序列式容器
- Java容器学习之——List
- stl之序列容器——list
- STL学习笔记— —容器list
- C++容器用法简介——list
- STL容器——list接口介绍
- 容器类概述(2)—List
- JDK容器与并发—List
- STL — list容器用法的详解
- 观察者模式
- mysql中导入txt文件数据的操作指令
- 二、C++多态性
- OpenCV文本图像的旋转矫正
- 菜鸟好文推荐(二十六)——避免Java堆空间错误的5个步骤
- 容器总结——list、forward list
- poj 1860 Currency Exchange 3259 Wormholes bellman 判环
- 数据结构之栈
- 容器总结——关联式容器
- POJ1001 Exponentiation
- R-store
- 初学者关于JDK的那点认识
- Javaweb邮箱验证注册的实现
- Excel:日期计算那些事儿