stack和queue的用法
stack
stack 模板類的定義在標頭檔案中。
stack 模板類需要兩個模板引數,一個是元素型別,一個容器型別,但只有元素型別是必要的。
定義stack 物件的示例程式碼如下:
stack s1;
stack s2;
stack 的基本操作有:
入棧,如例:s.push(x);
出棧,如例:s.pop();注意,出棧操作只是刪除棧頂元素,並不返回該元素。
訪問棧頂,如例:s.top()
判斷棧空,如例:s.empty(),當棧空時,返回true。
訪問棧中的元素個數,如例:s.size()。
queue
queue 模板類的定義在標頭檔案中。
與stack 模板類很相似,queue 模板類也需要兩個模板引數,一個是元素型別,一個容器型別,元素型別是必要的,容器型別是可選的。
定義queue 物件的示例程式碼如下:
queue q1;
queue 的基本操作有:
入隊,如例:q.push(x); 將x 接到佇列的末端。
出隊,如例:q.pop(); 彈出佇列的第一個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最早被壓入佇列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入佇列的元素。
判斷佇列空,如例:q.empty(),當佇列空時,返回true。
訪問佇列中的元素個數,如例:q.size()
#include <iostream> #include <stack> using namespace std; int main( ) { stack<int> mystack; for (int i=0; i<5; i++) mystack.push(i); printf("Pop up elements:\n"); while (mystack.empty()!=true) { printf("%d ",mystack.top()); mystack.pop(); } return 0; } #include <iostream> #include <queue> using namespace std; int main( ) { queue<int> myqueue; for (int i=0; i<5; i++) myqueue.push(i); printf("Pop up elements:\n"); while (myqueue.empty()!=true) { printf("%d ",myqueue.front()); myqueue.pop(); } return 0; }
補充std:
std 是一個名稱空間.
using namespace std;
就是指明下面的程式使用std,如果不用這句指明的話就要用std::string(string是std空間中定義的,也可以在全域性空間中定義,只要名字空間不一樣即可).否則可以預設名字空間中有std.便不用std::來修飾。
它是C++新標準中有的,解決多人作編大程式時名字衝突問題。比如A、B兩個班都有叫張三的人,你要使用A班的張三,必然要先指名是A班這個名字空間(namespace),然後你對張三的所有命令才能達到你的預想,不會叫錯人。
如果用#include<iostream.h>就不需寫這句話(舊標準)。但是如果用#include就必須要寫。
如果不寫這句,寫cin和cout時候就必須像下面這樣寫,否則找不到cin或者cout。
std::cin>>a;
std::cout<<a<<std::endl;