類模板
<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 一樣


成員函式


迭代器:

容量:

元素訪問:

修改器:

操作:

觀察器:

非成員函式過載