天天看點

STL之stack、queue

1.stack簡介:

stack是STL中的一種容器擴充卡,被設計來用于操作先進後出(First In Last Out,FILO)結構的情景,在這種情況下,元素的插入和删除都隻能在容器的尾部進行。

元素隻能在這個特定的容器的後面,也就是棧的頂部,進行出棧和入棧操作。

使用stack需要聲明頭檔案#include< stack>

2.stack的構造

構造satck:預設構造形式:stack< Type>stkName;

如:

stack< int>s1;//定義一個存放int的stack容器,并命名為s1
stack<flaoat>s2;//定義一個存放float的容器
stack<string>s3;
//尖括号内還可以設定指針類型或者是自定義類型
           

3.stack的基本操作函數

push(x)	//入棧操作(加入棧頂),将x加入棧頂
pop()	//出棧操作(删除棧頂),隻是出棧,沒有傳回值
top()	//傳回第一個元素(棧頂元素)
size()	//傳回棧中的元素個數
empty()	//當棧為空時傳回true
swap()	//交換兩個棧的内容(所有元素)
           

4.⚠️對一個空棧進行pop(),會導緻程式異常終止,應該使用empty()提前檢查

5.stack的拷貝構造與指派

stack對象的拷貝構造形式:stack< Type>stk2(stk1);
stack的指派形式:stk2 = stk1;
例如:
stack<int>s1;	
stack<int>s2(s1);//拷貝s1并構造s2
stack<int>s3;
s3 = s1;		//将s1的值賦給s3
           

6.stack的關系運算符

== != > >= < <=

a.用于比較兩個棧是否相等,首先判斷大小是否相等,然後再通過判斷元素之間是否相等,将會在第一個不相等的地方停止

b.!= 和==是相反的。隻要大小不同或者是有一個元素不一樣就是不相等的

c.<是從第一進制素開始比較當發現不小于時停止,如果一個棧時另一個棧的字首,那麼長的棧大,餘下3種關系運算符原理相同。

傳回值都是0,1

7.queue簡介:

quene是STL中的一種容器擴充卡,被設計來用于操作先進先出(First In First Out,FIFO)結構的情景,在這種情況下,元素的插入在容器的尾部進行,删除在容器的頭部進行。

使用quene需要聲明頭檔案#include< queue>

8.queue的構造(與stack相同)

構造queue:預設構造形式:stack< Type>stkName;

如:

stack< int>s1;//定義一個存放int的queue容器,并命名為s1
stack<flaoat>s2;//定義一個存放float的容器
stack<string>s3;
//尖括号内還可以設定指針類型或者是自定義類型
           

9.queue的基本操作函數

push(x)	//入隊操作(加入隊尾),将x加入隊尾
pop()	//出隊操作(删除隊首),隻是出隊,沒有傳回值
//top()傳回第一個元素(棧頂元素)
front()	//傳回第一個元素(隊首元素)
back()	//傳回最後一個元素(隊尾元素)
size()	//傳回隊列中的元素個數
empty()	//當隊列為空時傳回true
swap()	//交換兩個隊列的内容(所有元素)
           

總結:

stack的應用:

遞歸算法

括号比對檢測

DFS算法

······

queue的應用:

儲存暫時不用的資料(存儲位址)

BFS算法