C stack使用總結

2021-10-07 15:54:38 字數 1966 閱讀 1061

小技巧1.棧(stack)是一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。

棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(push),刪除則稱為退棧(pop)。棧也稱為先進後出表。

2.c++中的棧是是乙個容器類的改編。容器介面卡是乙個封裝了序列容器的類模板,它在一般序列容器的基礎上提供了一些不同的功能。之所以稱作介面卡類,是因為它可以通過適配容器現有的介面來提供不同的功能。

3.棧可以用來在函式呼叫的時候儲存斷點;做遞迴時要用到棧;編輯器中的 undo (撤銷)機制就是用堆疊來記錄連續的變化,撤銷操作可以取消最後乙個操作,這也是發生在堆疊頂部的操作;編譯器使用堆疊來解析算術表示式,

#include

因為c++中棧是容器類的改編,所以它沒有自己的建構函式。

stack 容器介面卡的模板有兩個引數。第乙個引數是儲存物件的型別,第二個引數是底層容器的型別。stack 的底層容器預設是 deque 容器,因此模板型別其實是 stack。通過指定第二個模板型別引數,可以使用任意型別的底層容器,只要它們支援 back()、push_back()、pop_back()、empty()、size() 這些操作。下面展示了如何定義乙個使用 list 的堆疊:

std::stack> ss;
建立棧時,不能在初始化列表中用物件來初始化,但是可以用另乙個容器來初始化,只要棧的底層容器型別和這個容器的型別相同。

std::stack<

int> values

;//錯誤×

std::list<

int> values

;std::stack<

int,std::list<

int>> my_stack (values)

;//正確

stack 模板定義了拷貝建構函式,因而可以複製現有的 stack 容器.

std::stack<

int,std::list<

int>>copy_stack

;

top():返回乙個棧頂元素的引用,型別為 t&。如果棧為空,返回值未定義。

push(const t& obj):可以將物件副本壓入棧頂。這是通過呼叫底層容器的 push_back() 函式完成的。

push(t&& obj):以移動物件的方式將物件壓入棧頂。這是通過呼叫底層容器的有右值引用引數的 push_back() 函式完成的。

pop():彈出棧頂元素。

size():返回棧中元素的個數。

empty():在棧中沒有元素的情況下返回 true。

emplace():用傳入的引數呼叫建構函式,在棧頂生成物件。

swap(stack & other_stack):將當前棧中的元素和引數中的元素交換。引數所包含元素的型別必須和當前棧的相同。對於 stack 物件有乙個特例化的全域性函式 swap() 可以使用。

棧因為沒有clear()方法,清空棧時就需要乙個乙個彈出,比較麻煩。這裡提供乙個清空棧的快速方法。

傳統方法:

void

clearstack

(stack

&s)}

快速方法:

oid clearstack

(stack

&s)

void

clearstack

(stack

&s)

C stack的介紹與使用

stack的文件介紹 翻譯 stack是一種容器介面卡,專門用在具有後進先出操作的上下文環境中,其刪除只能從容器的一端進行元素的插入與提取操作。stack是作為容器介面卡被實現的,容器介面卡即是對特定類封裝作為其底層的容器,並提供一組特定的成員函式來訪問其元素,將特定類作為其底層的,元素特定容器的尾...

C Stack堆疊的使用方法

堆疊 stack 代表了乙個後進先出的物件集合。當您需要對各項進行後進先出的訪問時,則使用堆疊。當您在列表中新增一項,稱為推入元素,stack 類的方法和屬性 下表列出了stack類的一些常用的屬性 屬性描述 count 獲取 stack 中包含的元素個數。下表列出了stack類的一些常用的方法 序...

c stack容器介紹

c stack 堆疊 是乙個容器的改編,它實現了乙個先進後出的資料結構 filo 使用該容器時需要包含 include標頭檔案 定義stack物件的示例 如下 stacks1 stacks2 stack的基本操作有 1.入棧 如s.push x 2.出棧 如 s.pop 注意 出棧操作只是刪除棧頂的...