1. 程式人生 > >stack和queue的用法

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;