2022年C++存储数据结构之一List .pdf
《2022年C++存储数据结构之一List .pdf》由会员分享,可在线阅读,更多相关《2022年C++存储数据结构之一List .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+ 存储数据结构之一List 双向循环链表list list 是双向循环链表,每一个元素都知道前面一个元素和后面一个元素。在STL 中, list和 vector 一样, 是两个常被使用的容器。和 vector 不一样的是, list 不支持对元素的任意存取。 list 中提供的成员函数与vector 类似,不过list 提供对表首元素的操作push_front 、pop_front ,这是 vector 不具备的。和vector 另一点不同的是,list 的迭代器不会存在失效的情况,他不像vector 会保留备份空间,在超过容量额度时重新全部分配内存,导致迭代器失效; list 没有备份空
2、间的概念,出入一个元素就申请一个元素的空间,所以它的迭代器不会失效。还是举C+之 vector 中的例子:int data6=3,5,7,9,2,4; listlidata(data, data+6); lidata.push_back(6); . list 初始化时,申请的空间大小为6,存放下了data 中的 6 个元素,当向lidata 插入第 7 个元素 “6”时, list 申请新的节点单元,插入到list 链表中,数据存放结构如图1 所示:图 1 list 的存储结构list 每次增加一个元素,不存在重新申请内存的情况,它的成本是恒定的。而vector 每当增加关键元素的时候,都需要
3、重新申请新的更大的内存空间,会调用元素的自身的复制构造函数,存在构造成本。在销毁旧内存的时候,会调用析构函数,存在析构成本。所以在存储复杂类型和大量元素的情况下,list 比 vector 更有优势!List是一个双向链表, 双链表既可以向前又向后链接他的元素。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - List 将元素按顺序储存在链表中. 与向量 (vector)相比 , 它允许快速的插入和删除,但是随机访问却比较慢。as
4、sign() 给 list 赋值back() 返回最后一个元素begin() 返回指向第一个元素的迭代器clear() 删除所有元素empty() 如果 list 是空的则返回true end() 返回末尾的迭代器erase() 删除一个元素front() 返回第一个元素get_allocator() 返回 list 的配置器insert() 插入一个元素到list 中max_size() 返回 list能容纳的最大元素数量merge() 合并两个 list pop_back() 删除最后一个元素pop_front() 删除第一个元素push_back() 在 list 的末尾添加一个元素pu
5、sh_front() 在 list 的头部添加一个元素rbegin() 返回指向第一个元素的逆向迭代器remove() 从 list 删除元素remove_if() 按指定条件删除元素rend() 指向 list 末尾的逆向迭代器resize() 改变 list 的大小reverse() 把 list 的元素倒转size() 返回 list 中的元素个数sort() 给 list 排序splice() 合并两个list 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7
6、页 - - - - - - - - - swap() 交换两个 list unique() 删除 list 中重复的元素附 List 用法实例:#include #include #include #include using namespace std; /创建一个list 容器的实例LISTINT typedef list LISTINT; /创建一个list 容器的实例LISTCHAR typedef list LISTCHAR; void main(void) /- /用 list 容器处理整型数据/- /用 LISTINT 创建一个名为listOne 的 list 对象LISTINT
7、 listOne; /声明 i 为迭代器LISTINT:iteratori; /从前面向listOne 容器中添加数据listOne.push_front (2); listOne.push_front (1); /从后面向listOne 容器中添加数据listOne.push_back (3); listOne.push_back (4); /从前向后显示listOne 中的数据coutlistOne.begin()- listOne.end():endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
8、 - - - - - 第 3 页,共 7 页 - - - - - - - - - for (i = listOne.begin(); i != listOne.end(); +i) cout *i ; coutendl; /从后向后显示listOne 中的数据LISTINT:reverse_iteratorir; coutlistOne.rbegin()-listOne.rend():endl; for (ir =listOne.rbegin(); ir!=listOne.rend();ir+) cout *ir ; coutendl; /使用 STL 的 accumulate( 累加 )算法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C+存储数据结构之一List 2022 C+ 存储 数据结构 之一 List
限制150内