C STL stack queue的使用方法

2021-08-08 13:55:21 字數 1995 閱讀 7775

略作修改)

一、stack(堆疊)

stack是乙個容器類的改編,它實現了乙個

先進後出

的資料結構,它儲存的容器物件來為它實現堆疊的所有功能。

注:迭代器不能在堆疊中使用,因為只有棧頂的元素才可以訪問。

typedef stack>>mystack

stack 模板類需要

兩個模板引數

,乙個是

元素型別

,乙個容器型別

,但只有

元素型別是必要的

,在不指定容器型別時,

預設的容器型別為deque。

它預設的引數中,容器是用deque實現的;被包含的容器要滿足value_type,size_type,empt,size,push_back,pop_back等功能。

包含這些功能的容器有:list,deque,vector。

函式列表:

運算子操作 比較和分配堆疊 

top() 返回棧頂元素;

pop() 移除棧頂元素;

push() 在棧頂增加元素;

size() 返回棧中元素數目;

empty() 堆疊為空則返回真;

定義stack 物件的示例**如下:

stacks1;

stacks2;

stack 的基本操作有:

入棧,如例:s.push(x);

出棧,如例:s.pop();注意,出棧操作只是刪除棧頂元素,並不返回該元素。

訪問棧頂,如例:s.top()

判斷棧空,如例:s.empty(),當棧空時,返回true。

訪問棧中的元素個數,如例:s.size()。

二、queue

queue 模板類的定義在標頭檔案中。

與stack 模板類很相似,queue 模板類也需要

兩個模板引數,

乙個是元素型別

,乙個容器類

型,元素型別是必要的,容器型別是可選的,預設為deque 型別。

定義queue 物件的示例**如下:

queueq1;

queueq2;

queue 的基本操作有:

入隊,如例:q.push(x); 將x 接到佇列的末端。

出隊,如例:q.pop(); 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。

訪問隊首元素,如例:q.front(),即最早被壓入佇列的元素。

訪問隊尾元素,如例:q.back(),即最後被壓入佇列的元素。

判斷佇列空,如例:q.empty(),當佇列空時,返回true。

訪問佇列中的元素個數,如例:q.size()

#include #include #include using namespace std;

int main()

};bool operator < (const t &t1, const t &t2)

main()

return 1;

}

輸出結果為(注意是按照z 的順序從大到小出隊的):

3 3 6

2 2 5

1 5 4

4 4 3

再看乙個按照z 的順序從小到大出隊的例子:

#include #include using namespace std;

class t

};bool operator > (const t &t1, const t &t2)

main()

return 1;

}

輸出結果為:

4 4 3

1 5 4

2 2 5

3 3 6

如果我們把第乙個例子中的比較運算子過載為:

bool operator < (const t &t1, const t &t2)

則第乙個例子的程式會得到和第二個例子的程式相同的輸出結果。

C STL stack queue的使用方法

c stl stack queue 的使用方法 1 stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 sta...

container of 的的的原理

另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...

存在的就是合理的,發生的即是必然的。

筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...