名稱空間
變體
操作

std::stack

來自 cppreference.com
< cpp‎ | 容器
定義於標頭檔案 <stack>
template<

    class T,
    class Container = std::deque<T>

> class stack;

std::stack 類是一個容器介面卡,它為程式設計師提供了的功能——具體來說,是一種後進先出 (LIFO) 的資料結構。

類模板作為底層容器的包裝器——只提供一組特定的函式。棧從底層容器的後端(稱為棧頂)推入和彈出元素。

std::stack 的所有成員函式都是 constexpr:可以在常量表達式的求值中建立和使用 std::stack 物件。

然而,std::stack 物件通常不能是 constexpr,因為任何動態分配的儲存都必須在相同的常量表達式求值中釋放。

(C++26 起)

目錄

[編輯] 模板引數

T - 儲存元素的型別。如果 TContainer::value_type 不是同一型別,則程式格式錯誤。
Container(容器) - 用於儲存元素的底層容器型別。該容器必須滿足 序列容器 (SequenceContainer) 的要求。此外,它必須提供以下具有通常語義的函式

標準容器 std::vector(包括 std::vector<bool>)、std::dequestd::list 滿足這些要求。預設情況下,如果未為特定棧類例項化指定容器類,則使用標準容器 std::deque

[編輯] 成員型別

型別 定義
container_type Container[編輯]
value_type Container::value_type[編輯]
size_type Container::size_type[編輯]
reference Container::reference[編輯]
const_reference Container::const_reference[編輯]

[編輯] 成員物件

成員 描述
Container c
底層容器
(受保護成員物件) [編輯]

[編輯] 成員函式

構造 stack
(公開成員函式) [編輯]
析構 stack
(公開成員函式) [編輯]
向容器介面卡賦值
(公開成員函式) [編輯]
元素訪問
訪問頂部元素
(公開成員函式) [編輯]
容量
檢查容器介面卡是否為空
(公開成員函式) [編輯]
返回元素數量
(公開成員函式) [編輯]
修改器
在棧頂插入元素
(公開成員函式) [編輯]
在棧頂插入一個元素範圍
(公開成員函式) [編輯]
(C++11)
在棧頂原地構造元素
(公開成員函式) [編輯]
移除頂部元素
(公開成員函式) [編輯]
(C++11)
交換內容
(公開成員函式) [編輯]

[編輯] 非成員函式

按字典序比較兩個 stack 的值
(函式模板) [編輯]
特化 std::swap 演算法
(函式模板) [編輯]

[編輯] 輔助類

特化 std::uses_allocator 型別特性
(類模板特化) [編輯]
std::stack 的格式化支援
(類模板特化) [編輯]

推導指引

(C++17 起)

[編輯] 註解

特性測試 標準 特性
__cpp_lib_containers_ranges 202202L (C++23) 容器的範圍構造和插入
__cpp_lib_constexpr_containers 202502L (C++26) constexpr std::stack

[編輯] 示例

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 307 C++98 Container 不能是 std::vector<bool> 允許
LWG 2566 C++98 缺少 Container::value_type 的要求 如果 TContainer::value_type 不是同一型別,則格式錯誤

[編輯] 參閱

可變大小的連續陣列
(類模板) [編輯]
節省空間的動態位集
(類模板特化) [編輯]
雙端佇列
(類模板) [編輯]
雙向連結串列
(類模板) [編輯]