C++ list 初识

来源:互联网 发布:企业数据标准化 编辑:程序博客网 时间:2024/06/05 07:50

    在使用list必须包括头文件#include <list>

    list是双向循环链表,每一个元素都知道前面一个元素和后面一个元素,既可以向前又向后链接它的元素

    与vector不一样的地方:1. list不支持对元素的任意存取;2.list的迭代器不会存在失效的情况,他不像vector会保留备份空间,在超过容量额度时重新全部分配内存,导致迭代器失效;list没有备份空间的概念,出入一个元素就申请一个元素的空间,所以它的迭代器不会失效。

    因此,list将元素按顺序储存在链表中,与vector相比,它允许快速的插入和删除,但是随机访问却比较慢。list每次增加一个元素,不存在重新申请内存的情况,它的成本是恒定的。而vector每当增加关键元素的时候,都需要重新申请新的更大的内存空间,会调用元素的自身的复制构造函数,存在构造成本。在销毁旧内存的时候,会调用析构函数,存在析构成本。所以在存储复杂类型和大量元素的情况下,listvector更有优势

0 0
原创粉丝点击