第二講 STL容器之佇列與棧

2021-09-30 17:09:36 字數 1794 閱讀 3451

3. 棧

stl容器是c++中封裝好的可以直接供使用者使用的資料結構,它和陣列有些類似,事實上很多stl也完全可以由陣列模擬實現,但顯然沒有直接呼叫已經封裝好的stl容器方便。除此之外,還有乙個最大的特點是,stl容器是一種動態的容器,它的記憶體空間的分配是動態分配的,而不像陣列,在宣告的一開始就需要指明陣列的容量大小。

佇列,顧名思義,就是一種模擬隊伍或排隊的資料結構,它的特點是先進先出,就是說每次從佇列容器中取出的元素都是當前隊伍的隊首元素,每次插入到佇列中的元素都是插到隊尾,這就很像食堂吃飯時排隊一樣,後來的人不能插隊,得到隊伍末尾,每次食堂阿姨盛飯都是給隊首的同學盛飯,然後隊首的同學離開隊伍。

出隊<— x1

<— x2

<— x3

<— …

<— xn-1

<— xn

<—入隊

隊首元素隊尾元素

#include

queue q;

//宣告乙個元素型別為t的佇列

其中,尖括號裡的t表示佇列中每乙個元素的型別,可以是int、double、float、char等基本變數型別,也可以是使用者自定義的struct結構體型別。

如定義乙個以int為元素型別的佇列q:

queue<

int> q;

方法

返回型別

含義q.front()

t返回佇列的隊首元素

q.back()

t返回佇列的隊尾元素

q.pop()

void

隊首元素出隊,即刪除最先進來的元素

q.empty()

bool

返回佇列是否為空,true表示隊列為空,false表示隊列為非空

q.size()

int返回佇列的長度,即佇列中元素的個數

其中,t表示佇列中的元素型別。

#include

#include

using namespace std;

intmain()

#include

和佇列類似

stack s;

//宣告乙個元素型別為t的棧

其中,尖括號裡的t表示佇列中每乙個元素的型別,可以是int、double、float、char等基本變數型別,也可以是使用者自定義的struct結構體型別。

如定義乙個以int為元素型別的棧s:

stack<

int> s;

方法

返回型別

含義s.top()

t返回棧頂元素

s.pop()

void

棧頂元素出棧,即刪除最後進來的元素

s.empty()

bool

返回棧是否為空,true表示棧為空,false表示棧為非空

s.size()

int返回棧的大小,即棧中元素的個數

其中,t表示佇列中的元素型別。

#include

#include

using namespace std;

intmain()

STL 棧與佇列

在大多數情況下可以不需要自己寫相應函式,直接呼叫stl中棧與佇列的相關函式,簡潔方便。以下是stl中棧與佇列的標頭檔案,定義方式以及常用函式 標頭檔案 include 佇列 include 棧定義方式 stacks 棧的定義方式 queueq 佇列的定義方式棧的基本操作 s.empty 如果棧為空返...

資料結構第二講筆記之棧 佇列(2)

資料結構 record two stack queue 堆疊 棧是乙個先進後出的線性表,它僅允許在表的一端進行插入和刪除操作 運算受限的線性表 下面首先來看一看順序儲存實現的堆疊 堆疊的順序儲存實現 本測試所用資料型別為int型 include include define error 1 type...

STL容器之優先佇列

優先順序佇列,以前刷題的時候用的比較熟,現在竟然我只能記得它的關鍵字是priority queue 太傷了 在一些定義了權重的地方這個資料結構是很有用的。先回顧佇列的定義 佇列 queue 維護了一組物件,進入佇列的物件被放置在尾部,下乙個被取出的元素則取自佇列的首部。priority queue特...