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: 0stacksize of second: 3
size of third: 0
size of fourth: 2
::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: 55stack
::pop
void pop ( );
在棧的頂部移除元素。
output:[cpp]view plain
copy
// stack::push/pop
#include
#include
using
namespace
std;
intmain ()
cout <
return
0;
}
popping out elements... 4 3 2 1 0
void push ( const t& x );在棧頂新增元素
output:[cpp]view plain
copy
// stack::push/pop
#include
#include
using
namespace
std;
intmain ()
cout <
return
0;
}
popping out elements... 4 3 2 1 0
size_type size ( ) const;計算棧物件元素個數
output:[cpp]view plain
copy
// stack::size
#include
#include
using
namespace
std;
intmain ()
0. size: 01. 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 152、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的時候命令列一閃而過,並...