C++ 庫 - <list>



介紹

列表是一個常用的序列容器。容器是一個儲存相同型別資料的物件。列表容器實現為雙向連結串列,因此它提供了對其資料的雙向順序訪問。

列表不提供快速的隨機訪問,它只支援雙向順序訪問。列表允許在序列中的任何位置進行插入和刪除操作,時間複雜度為O(1)。

列表的元素可以散佈在記憶體的不同塊中。容器儲存必要的資訊以允許順序訪問其資料。列表可以在執行時從兩端根據需要收縮或擴充套件。儲存需求由內部分配器自動滿足。

零大小的列表也是有效的。在這種情況下,list.begin() 和 list.end() 指向相同的位置。但是呼叫 front() 或 back() 的行為是未定義的。

定義

以下是來自 <list> 標頭檔案的 std::list 的定義

template < class T, class Alloc = allocator<T> > class list;

引數

  • T − 包含的元素的型別。

    T 可以被任何其他資料型別替換,包括使用者定義型別。

  • Alloc − 分配器物件的型別。

    預設情況下,使用分配器類模板,它定義了最簡單的記憶體分配模型並且與值無關。

成員型別

以下成員型別可以用作成員函式的引數或返回型別。

序號 成員型別 定義
1 value_type T(模板的第一個引數)
2 allocator_type Alloc(模板的第二個引數)
3 reference value_type&
4 const_reference const value_type&
5 pointer value_type*
6 const_pointer const value_type*
7 iterator 指向 value_type 的隨機訪問迭代器
8 const_iterator 指向 const value_type 的隨機訪問迭代器
9 reverse_iterator std::reverse_iterator <iterator>
10 const_reverse_iterator std::reverse_iterator <const_iterator>
11 size_type size_t
12 difference_type ptrdiff_t

來自 <list> 的函式

以下是 <list> 標頭檔案中所有方法的列表。

建構函式

序號 方法和描述
1 list::list 預設建構函式

構造一個包含零個元素的空列表。

2 list::list 填充建構函式

構造一個新的列表,包含n個元素,並將val賦值給列表的每個元素。

3 list::list 填充建構函式

構造一個新的列表,包含n元素,並將零值賦值給列表的每個元素。

4 list::list 範圍建構函式

構造一個列表,其元素數量與firstlast.

5 list::list 的範圍中的元素數量相同。

複製建構函式

6 list::list 構造一個列表,其中包含現有列表中每個元素的副本。

移動建構函式使用移動語義構造一個包含other

7 list::list 內容的列表。

移動建構函式使用移動語義構造一個包含other

初始化列表建構函式

序號 方法和描述
1 解構函式

list::~list

透過釋放其記憶體來銷燬列表物件。

序號 方法和描述
1 成員函式 list::assign

範圍版本

2 成員函式 透過替換舊值來為列表賦值新值。

填充版本

3 成員函式 透過替換舊值來為列表賦值新值。

填充版本

4 初始化列表版本

list::back

5 返回對列表的最後一個元素的引用。

list::begin

6 返回一個指向列表第一個元素的隨機訪問迭代器。

list::cbegin

7 返回一個指向列表開頭的常量隨機訪問迭代器。

list::cend

8 返回一個指向列表結尾的常量隨機訪問迭代器。

list::clear

9 透過從列表中刪除所有元素並將列表的大小設定為零來銷燬列表。

list::crbegin

10 返回一個指向列表最後一個元素的常量反向迭代器。

list::crend

11 返回一個指向列表中第一個元素之前的理論元素的常量反向迭代器。

list::emplace

12 透過在給定位置插入新元素來擴充套件列表。

list::emplace_back

13 在列表末尾插入新元素,並將列表大小增加一。

list::emplace_front

14 在列表開頭插入新元素,並將列表大小增加一。

list::empty

15 測試列表是否為空。

list::end

16 返回一個指向列表最後一個元素的隨機訪問迭代器。list::erase

位置版本

17 返回一個指向列表最後一個元素的隨機訪問迭代器。list::assign

從列表中刪除單個元素。

18 從列表中刪除元素範圍。

list::front

19 返回對列表第一個元素的引用。

list::get_allocator

20 返回與列表關聯的分配器。 list::insert

單個元素版本透過在position

21 返回與列表關聯的分配器。 透過替換舊值來為列表賦值新值。

處插入新元素來擴充套件迭代器。

22 返回與列表關聯的分配器。 list::assign

處插入新元素來擴充套件迭代器。

23 返回與列表關聯的分配器。 透過在容器中插入新元素來擴充套件列表。

移動版本

24 返回與列表關聯的分配器。 透過替換舊值來為列表賦值新值。

透過在容器中插入新元素來擴充套件列表。

25 透過在容器中插入新元素來擴充套件列表

list::max_size

26 返回列表可以容納的最大元素數。

list::merge

27 返回列表可以容納的最大元素數。 將兩個已排序的列表合併為一個。

list::merge

28 返回列表可以容納的最大元素數。 透過在容器中插入新元素來擴充套件列表。

比較函式

29 返回列表可以容納的最大元素數。 使用移動語義將兩個已排序的列表合併為一個。

比較函式

30 比較函式移動版本 list::operator=

複製版本

31 比較函式移動版本 透過在容器中插入新元素來擴充套件列表。

透過替換舊值來為列表賦值新內容。

32 比較函式移動版本 透過替換舊值來為列表賦值新值。

透過替換舊值來為列表賦值新內容。

33 為列表賦值新內容,替換舊內容。

list::pop_back

34 從列表中刪除最後一個元素。

list::pop_front

35 從列表中刪除第一個元素。

list::push_back

36 從列表中刪除第一個元素。 透過在容器中插入新元素來擴充套件列表。

list::push_back

37 在列表末尾插入新元素。

list::push_front

38 在列表末尾插入新元素。 透過在容器中插入新元素來擴充套件列表。

list::push_front

39 在列表開頭插入新元素。

list::rbegin

40 返回一個指向列表最後一個元素的反向迭代器。

list::remove

41 從列表中刪除與值匹配的元素。

list::remove_if

42 從列表中刪除滿足條件的元素。

list::rend

43 返回一個指向列表反向末尾的反向迭代器。

list::resize

44 返回一個指向列表反向末尾的反向迭代器。 更改列表的大小。

list::resize

45 值版本

list::reverse

46 反轉列表中元素的順序。

list::size

47 返回列表中存在的元素數量。

list::sort

48 返回列表中存在的元素數量。 將兩個已排序的列表合併為一個。

list::sort

49 對列表的元素進行排序。

list::splice

50 對列表的元素進行排序。 將所有元素從列表轉移到 *this。

單個元素將迭代器指向的元素i從列表x轉移到.

51 對列表的元素進行排序。 透過在容器中插入新元素來擴充套件列表。

*this從列表轉移到將所有元素從列表

52 對列表的元素進行排序。 list::assign

轉移,使用移動語義。firstlast將範圍內的元素轉移從列表轉移到.

53 對列表的元素進行排序。

單個元素移動版本將迭代器指向的元素i從列表x轉移到將所有元素從列表

54 對列表的元素進行排序。 將迭代器指向的元素轉移

轉移,使用移動語義。firstlast將範圍內的元素轉移從列表轉移到將所有元素從列表

55 範圍和移動版本

list::swap從列表.

56 將列表的內容與另一個列表的內容交換。

list::unique

57 將列表的內容與另一個列表的內容交換。

list::unique

從列表中刪除所有連續的重複元素。

廣告