queue

N1ce2cu發表於2024-08-20

queue

只能訪問 queue<T> 容器介面卡的第一個和最後一個元素。只能在容器的末尾新增新元素,只能從頭部移除元素。

queue 的生成方式和 stack 相同,下面展示如何建立一個儲存字串物件的 queue:

queue<string> words;

也可以使用複製建構函式:

queue<string> copy_words {words}; 

stack<T>queue<T> 這類介面卡類都預設封裝了一個 deque<T> 容器,也可以透過指定第二個模板型別引數來使用其他型別的容器:

queue<string, list<string>>words;

底層容器必須提供這些操作:front()、back()、push_back()、pop_front()、empty() 和 size()。

queue 操作

queue 和 stack 有一些成員函式相似,但在一些情況下,工作方式有些不同:

  • front():返回 queue 中第一個元素的引用。如果 queue 是常量,就返回一個常引用;如果 queue 為空,返回值是未定義的。
  • back():返回 queue 中最後一個元素的引用。如果 queue 是常量,就返回一個常引用;如果 queue 為空,返回值是未定義的。
  • push(const T& obj):在 queue 的尾部新增一個元素的副本。這是透過呼叫底層容器的成員函式 push_back() 來完成的。
  • push(T&& obj):以移動的方式在 queue 的尾部新增元素。這是透過呼叫底層容器的具有右值引用引數的成員函式 push_back() 來完成的。
  • pop():刪除 queue 中的第一個元素。
  • size():返回 queue 中元素的個數。
  • empty():如果 queue 中沒有元素的話,返回 true。
  • emplace():用傳給 emplace() 的引數呼叫 T 的建構函式,在 queue 的尾部生成物件。
  • swap(queue<T> &other_q):將當前 queue 中的元素和引數 queue 中的元素交換。它們需要包含相同型別的元素。也可以呼叫全域性函式模板 swap() 來完成同樣的操作。

queue<T> 模板定義了複製和移動版的 operator=(),對於所儲存元素型別相同的 queue 物件,它們有一整套的比較運算子,這些運算子的工作方式和 stack 容器相同。

和 stack 一樣,queue 也沒有迭代器。訪問元素的唯一方式是遍歷容器內容,並移除訪問過的每一個元素。

相關文章