STL中stack與queue庫函式 的使用方法

2021-07-31 01:24:10 字數 4224 閱讀 3463



1、stack

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

stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要

的,在不指定容器型別時,預設的容器型別為deque。

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

stacks1;

stacks2;

stack 的基本操作有:

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

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

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

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

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

成員函式

stack

::stack

explicit stack ( const container& ctnr = container() );

用於構造乙個棧介面卡物件。

ctnr

container object

container is the second class template parameter (the type of the underlying container for the

stack; by default: 

deque, see 

class description).

[cpp]view plain

copy

// test_stack.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include 

#include 

#include 

#include 

using

namespace

std;  

int_tmain(

intargc, _tchar* argv)  

output:

size of first: 0

size of second: 3

size of third: 0

size of fourth: 2

stack

::empty

bool empty ( ) const;
判斷是否為空。

true if the container size is 0, false otherwise.

[cpp]view plain

copy

// stack::empty

#include 

#include 

using

namespace

std;  

intmain ()  

cout <

<

return

0;  

}  output:

total: 55

stack

::pop

void pop ( );

在棧的頂部移除元素。

[cpp]view plain

copy

// stack::push/pop

#include 

#include 

using

namespace

std;  

intmain ()  

cout <

return

0;  

}  

output:

popping out elements... 4 3 2 1 0

void push ( const t& x );
在棧頂新增元素

[cpp]view plain

copy

// stack::push/pop

#include 

#include 

using

namespace

std;  

intmain ()  

cout <

return

0;  

}  

output:

popping out elements... 4 3 2 1 0

size_type size ( ) const;
計算棧物件元素個數

[cpp]view plain

copy

// stack::size

#include 

#include 

using

namespace

std;  

intmain ()  

output:

0. size: 0

1. size: 5

2. size: 4

value_type& top ( );

const value_type& top ( ) const;

返回棧頂元素

[cpp]view plain

copy

// test_stack.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include 

#include 

#include 

#include 

using

namespace

std;  

int_tmain(

intargc, _tchar* argv)  

output:

mystack.top() is now 15

2、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)

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

STL中的queue用法與stack用法對比

是stl中的佇列,特點是先進先出,方便我們不用自己去構造佇列,包含在標頭檔案 include中。定義乙個佇列 queueq 資料型別可以根據自己的需要來定義 基本操作 入隊 q.push x 將元素新增到佇列的末尾。出隊 q.pop 彈出佇列的第乙個元素 並不返回該元素的值 訪問隊首元素 q.fro...

STL容器之stack與queue用法

目錄 一 棧的概念 二 棧的構造與常用介面 三 佇列的概念 四 佇列的構造與常用介面 棧的儲存規則是先進後出 filo 可以同vector deque一樣可以儲存任意一種資料型別的資料元素,它只有乙個出口,而且它只能訪問棧頂的元素,不允許遍歷操作,需要獲取棧裡的元素,則需要乙個個將棧頂的元素移出。1...

STL中stack和queue的用法

發現在平常的編碼中,stack和queue用到的頻率都非常高,自己寫乙個stack和queue又顯得麻煩,今天特地研究如何使用stl中的stack和queue。研究的並不輸入,只是一些簡單用法而已。下面附上我的stack和queue使用 ps 在vs2010中按ctrl f5的時候命令列一閃而過,並...