C STL 標準庫 std stack 總結

2021-10-07 06:55:33 字數 1652 閱讀 1095

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出棧

emplacepush 能用的 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...