类模板
<list>

std::list

template < class T, class Alloc = allocator<T> > class list;
列表
列表是序列容器,允许在序列中的任何位置进行常量时间的插入和擦除操作,并支持双向迭代。

列表容器是作为双向链表实现的;双向链表可以将其包含的每个元素存储在不同且不相关的存储位置。其顺序通过每个元素关联一个指向前一个元素和一个指向后一个元素的链接来内部维护。

它们与 forward_list 非常相似:主要区别在于 forward_list 对象是单向链表,因此它们只能向前迭代,作为交换,它们的体积更小、效率更高。

与其他基础标准序列容器(arrayvectordeque)相比,对于已经获得迭代器的容器内任何位置,列表在插入、提取和移动元素方面通常表现更好,因此在大量使用这些操作的算法(如排序算法)中也是如此。

与这些其他序列容器相比,listforward_list 的主要缺点是它们缺乏通过位置直接访问元素的能力;例如,要访问list中的第六个元素,必须从一个已知位置(如开头或结尾)迭代到该位置,这需要与距离成线性关系的时间。它们还会消耗一些额外的内存来保存与每个元素关联的链接信息(对于包含大量小尺寸元素的列表来说,这可能是一个重要因素)。

容器属性

序列
序列容器中的元素按严格的线性序列排序。单个元素通过其在此序列中的位置进行访问。
双向链表
每个元素都保存着如何定位下一个和上一个元素的信息,允许在特定元素之前或之后进行常量时间的插入和擦除操作(甚至是整个范围),但不支持直接随机访问。
感知分配器
容器使用分配器对象来动态处理其存储需求。

模板参数

T
元素的类型。
作为成员类型别名list::value_type.
Alloc
用于定义存储分配模型的分配器对象类型。默认情况下,使用 allocator 类模板,它定义了最简单的内存分配模型并且与值无关。
作为成员类型别名list::allocator_type.

成员类型

成员类型定义说明
value_type第一个模板参数 (T)
allocator_type第二个模板参数 (Alloc)默认为allocator<value_type>
引用allocator_type::reference对于默认的 allocatorvalue_type&
const_referenceallocator_type::const_reference对于默认的 allocatorconst value_type&
指针allocator_type::pointer对于默认的 allocatorvalue_type*
const_pointerallocator_type::const_pointer对于默认的 allocatorconst value_type*
iterator指向value_type双向迭代器,可转换为const_iterator
const_iterator指向const value_type
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_type一个有符号整数类型,与iterator_traits<iterator>::difference_type相同,通常与 ptrdiff_t 一样
size_type一个可以表示任何非负值的difference_type的无符号整数类型,通常与 size_t 一样
成员类型定义说明
value_type第一个模板参数 (T)
allocator_type第二个模板参数 (Alloc)默认为allocator<value_type>
引用value_type&
const_referenceconst value_type&
指针allocator_traits<allocator_type>::pointer对于默认的 allocatorvalue_type*
const_pointerallocator_traits<allocator_type>::const_pointer对于默认的 allocatorconst value_type*
iterator指向value_type双向迭代器,可转换为const_iterator
const_iterator指向const value_type
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_type一个有符号整数类型,与
iterator_traits<iterator>::difference_type
相同,通常与 ptrdiff_t 一样
size_type一个可以表示任何非负值的difference_type的无符号整数类型,通常与 size_t 一样


成员函数


迭代器:

容量:

元素访问:

修改器:

操作:

观察器:

非成员函数重载