C++ 庫 - <deque>



簡介

Deque 是**雙端佇列**(Double Ended Queue) 的縮寫。它是一個可以在執行時改變大小的序列容器。容器是一個儲存相同型別資料的物件。序列容器嚴格按照線性順序儲存元素。

Deque 的元素可以分散在記憶體的不同塊中。容器儲存必要的資訊,以便能夠在恆定時間內直接訪問任何元素。與向量不同,Deque 不保證將其所有元素儲存在連續的記憶體位置。因此,它不允許透過偏移指標來直接訪問資料。但是,它可以使用下標運算子 [] 直接訪問任何元素。

Deque 可以根據需要在執行時從兩端收縮或擴充套件。儲存需求由內部分配器自動滿足。Deque 提供與向量類似的功能,但提供了從任何一端高效插入和刪除資料的方法。

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

定義

以下是 <deque> 標頭檔案中 std::deque 的定義

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

引數

  • 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

來自 <deque> 的函式

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

建構函式

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

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

2 deque::deque 填充建構函式

構造一個新的 deque,其中包含n個元素,並將val賦值給 deque 的每個元素

3 deque::deque 範圍建構函式

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

4 deque::deque 的範圍一樣多。

複製建構函式

5 deque::deque 構造一個 deque,其中包含現有容器中每個元素的副本。

移動建構函式

6 deque::deque 使用移動語義構造一個包含其他內容的 deque。

初始化列表建構函式

從初始化列表構造一個 deque。

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

deque::~deque

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

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

deque::assign

2 透過替換舊值來為 deque 元素分配新值。

deque::atn返回 deque 中位置

3 處元素的引用。

deque::back

4 返回對 deque 的最後一個元素的引用。

deque::begin

5 返回一個指向 deque 的第一個元素的隨機訪問迭代器。

deque::cbegin

6 返回一個指向 deque 開頭的常量隨機訪問迭代器。

deque::cbegin

7 deque::cend

deque::clear

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

deque::crbegin

9 返回一個指向容器反向開頭的常量反向迭代器。

deque::crend

10 返回一個指向 deque 反向結尾的常量反向迭代器。

deque::emplace透過在.

11 position

處插入新元素來擴充套件容器

12 deque::emplace_back

在 deque 的末尾插入新元素。

13 deque::emplace_front

在 deque 的開頭插入新元素。

14 deque::empty

測試 deque 是否為空。deque::end返回一個指向 deque 容器中

15 末尾元素之後的位置

的迭代器。

16 deque::erase

從 deque 中刪除單個元素。

17 deque::front

返回對 deque 的第一個元素的引用

18 deque::get_allocator

返回與 deque 關聯的分配器

19 deque::insert

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

20 deque::max_size

返回 deque 可以容納的最大元素數。

21 deque::operator=

透過替換舊內容來為 deque 分配新內容,並在必要時修改大小。n.

22 deque::operator[]

返回 deque 中位置

23 處元素的引用。

deque::pop_back

24 從 deque 中刪除最後一個元素,並將 deque 的大小減一。

deque::pop_front

25 從 deque 中刪除第一個元素,並將 deque 的大小減一。

deque::push_back

26 在 deque 的末尾插入新元素,並將 deque 的大小加一。

deque::push_front

27 在 deque 的開頭插入新元素,並將 deque 的大小加一。

deque::rbegin

28 返回一個指向 deque 的最後一個元素的反向迭代器。

deque::rend

29 返回一個指向 deque 反向結尾的反向迭代器。

deque::resize

30 更改 deque 的大小。

deque::shrink_to_fit

31 請求容器將其容量減小以適應其大小。

deque::size

返回 deque 中存在的元素數。

序號 方法和描述
1 deque::swap

將 deque 的內容與另一個 deque 的內容交換。

2 非成員過載函式

將 deque 的內容與另一個 deque 的內容交換。

3 operator==

測試兩個 deque 是否相等。

4 operator!=

operator<

5 測試第一個 deque 是否小於另一個 deque。

operator<=

6 測試第一個 deque 是否小於或等於另一個 deque。

operator>

operator>=
測試第一個 deque 是否大於或等於另一個 deque。