stack 是一種容器介面卡/配接器(container adaptor), 被設計用來支援 lifo 的資料結構. deque 是雙向開口的資料結構, 因此以 deque 為底部結構封閉其頭部開口, 就可以形成 stack. adaptor 指的是通過修改某種容器的介面, 形成另一種資料結構, 因此他不被歸類為容器.
他被定義在標頭檔案中, 如果使用必須引入改標頭檔案, 定義方式為
template
<
classt,
class
container
= std::deque
>
class
stack
;
可見預設基於deque
構造 stack
可以檢視cppreference: stack 以獲得詳細建構函式的資訊. 注意他的建構函式中, 沒有乙個的引數是std::initializer_list
, 可以對比如下 vector 中的乙個建構函式:
vector
( std::initializer_list init,
//用於列表初始化
const allocator& alloc =
allocator()
);
因此 stack 不支援列表初始化. 常用以下幾個建構函式:
stack()
:stack
(container()
)// 預設
explicit
stack
(const container& cont )
;// 從 container 裡面的元素拷貝過來
explicit
stack
( container&& cont )
;// 右值引用
stack
(const stack& other )
;// 拷貝 stack
stack
( stack&& other )
;// 右值拷貝
注意, 可是使用explicit stack( container&& cont );
來模擬一下列表初始化, 例如
stack<
int>()
;
member function
說明top
訪問棧頂元素, 返回對棧頂元素的引用
empty
判斷是否為空
size
返回棧內元素個數
push
入棧
pop
出棧
emplace
push 能用的 emplace 也能用, 但是emplace 可以直接傳入構造物件所需要的元素, 然後自己呼叫建構函式, 然**棧.如果需要構造物件,使用 emplace 比 push 更為節省記憶體(push 需要自己構造 + 拷貝愛)
swap
交換兩個 stack 中的內容, 比如滿足 t/container 一致
C STL 標準模板庫
1.泛型程式設計 在c 中,模板是泛型程式設計的基礎。下面有乙個stl初體驗的 include include include include include include using namespace std 自定義函式物件 template class square int test int...
C STL標準模板庫
stl共有6中元件 容器 容器介面卡 迭代器 演算法 函式物件 仿函式 和函式介面卡。最常用的是順序容器,順序容器內的元素按其位置進行儲存和訪問。除順序容器外,標準庫還定義了幾種關聯容器。這裡我們主要講一下順序容器。標準庫定義了三種順序容器型別 vector list和deque,它們的差別在於訪問...
c STL(標準模板庫)
c stl 標準模板庫 是一套功能強大的 c 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量 鍊錶 佇列 棧。元件描述 容器 containers 容器是用來管理某一類物件的集合。c 提供了各種不同型別的容器,比如 deque list vecto...