棧也是一種常用的資料結構,其特點是last in first out(後進先出)。
棧對於某些問題的處理是非常方便的,比如字尾表示式求值、中綴表示式轉化為字尾表示式。
逆序輸出未知長度的字串、十進位制轉二進位制。
等等……
//一般使用空腔構造
ss.push(2
);//將整形資料2壓入到棧ss中
ss.push(5
);//將整形資料5壓入到棧ss中
此時棧ss如圖所示:
//輸出棧頂元素
ss.pop()
;//彈出棧頂元素,此時棧頂將向下移動乙個位置
cout << ss.
size()
;//獲得棧的長度
if(ss.
empty()
);//判斷棧是否為空
這裡我們利用棧倒序輸出一行中全部的字串,順便再利用stringstream鞏固一下string部分的一些內容。
另外,提一下,棧空間的使用
我們平時寫**的時候,區域性變數都會用到棧空間,比如我們經常使用遞迴來處理漢諾塔等遞迴問題。
遞迴就是乙個很典型的棧,第一層的遞迴先入棧,因為是第一層,它總是最先被呼叫,最先入棧。
在做題的時候,棧空間是有限的,有時候會溢位,所以能將遞迴改為非遞迴的演算法,一般都會使用非遞迴,比如斐波那契額數列求值。
stack簡單使用,適用於像我這樣的小白快速上手,大神請鍵下留情!
發現問題歡迎指正!
C STL常用操作之vector篇
include 它是一種容器,可以理解為向量 陣列 可以動態申請增加長度的陣列。vector int v1 預設陣列長度為0 vector int v2 4 申請了長度為4的陣列v2 vector int v3 4,5 申請了長度為4的陣列,並且每個位置都賦值為5用at或者類似於陣列 vector ...
C STL常用操作之string篇
include 一種資料型別,類似於字串,但是可以進行一些比字串更方便的操作,在程式設計的時候也是經常用到。string s1 預設為空串 string s2 4 c 長度為4且每個位置的字元均為c cout s1 endl s2 endl getline cin,s1 讀取一整行 cin s2 讀...
C STL常用操作之multimap篇
multimap和map其實很相似但是multimap是允許重複元素的。map詳見 如此,我們可以看到,我們插入了三個鍵值key均為520的元素,這個操作在multimap中是合法的。multimap int,string multi multi.insert pair int,string 520...