C 基礎 STL之棧stack

2021-10-25 05:12:55 字數 1895 閱讀 8977

這篇文章介紹一下stl中stack的基本使用方法。

棧也是最為常見的一種資料結構,佇列中的元素滿足filo(先進後出)

#include

using namespace std;

stack函式名

用途功能說明

時間複雜度

size()

查詢遍歷

獲取元素個數

o(1)

top()

查詢遍歷

獲取指向第乙個元素的迭代器

o(1)

push

插入在末尾插入資料x

o(1)

pop刪除

刪除最後乙個元素

o(1)

empty

刪除刪除所有元素

o(n)

注:stack的成員函式主要包括插入和刪除,實際對應著棧操作的入棧和出棧兩個操作,然後就是獲取元素個數和棧定元素的操作,都是負載度為o (1)的操作。

本身實際上沒有什麼可比較的地方的,但是關於相類似的成員函式vector的如下所示

stack函式名

vector函式名

用途功能說明

時間複雜度

size()

size()

查詢遍歷

獲取元素個數

o(1)

top()

begin()

查詢遍歷

獲取指向第乙個元素的迭代器

o(1)

-end()

查詢遍歷

獲取末尾的迭代器

o(1)

-insert(position,x)

插入在position位置插入資料x

o(n)

-erase(position)

刪除刪除position位置上的元素

o(n)

push

push_back(x)

插入在末尾插入資料x

o(1)

poppop_back()

刪除刪除最後乙個元素

o(1)

empty

clear()

刪除刪除所有元素

o(n)

注:可以看到vector基本上包含所有的stack的操作,實際上也非常容易理解,使用陣列將一端固定,只從另外一端插入刪除就是棧的實現,所以可以看到棧是沒有在指定位置執行插入和刪除的操作的,因為實現完畢之後就是vector了。

#include #include using namespace std;

void print_top_element(stack s) else

}int main()

stack element in 

size:0

size:1 stack top element : l

size:2 stack top element : i

size:3 stack top element : u

stack element out

size:2 stack top element : i

size:1 stack top element : l

process finished with exit code 0

變長支援、泛化型別、常用功能函式內嵌、可以使用其他多種stl的函式、使用簡單等,都是stack被使用的原因,但是棧本身是一種非常簡單的資料結構,在stl的實現中也有很多限制,比如沒有迭代器的支援等。

STL容器之stack棧

棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...

STL之stack(棧)詳解

這種資料結構使用lifo技術,其中lifo表示後進先出。首先插入的元素將在末尾提取,以此類推。有乙個名為 top 的元素,它是位於最上面位置的元素。所有插入和刪除操作都是在堆疊的頂部元素本身進行的。語法 template classt,class container deque class stac...

C 中STL容器之棧 stack

1.棧 stack 基本介紹 棧是限定在僅在表尾進行插入或刪除操作的線性表,表尾端稱為棧頂 top 表頭端稱為 棧底 bottom 一般的棧如下圖所示,它的特點可用圖3.1 b 所示的鐵路排程站形象地表示 2.棧的基本用法 2.1 棧的定義方式 stacks 引數也是資料型別,這是棧的定義方式 st...