標籤:namespace 資料類型 idt blog i++ pac jpg push src
棧stack
-先入後出FILO
棧可以理解為一個坑,先掉坑裡的被壓在下面,等上面的走了才能出來
標頭檔 <stack>
入棧 push(某東西);
棧頂元素出棧 pop();
是否為空白 empty(); 空返回1 非空返回0
大小 size(); 返回元素個數
查看棧頂(只是查看,下面的也一樣) top(); 返回棧頂元素 //如果棧是空的再看棧頂元素就要出事咯
隊列
-先入先出FIFO
標頭檔 <queue>
入隊 push(某東西);
出隊 pop();
查看隊首 front(); 返回隊首元素
查看隊尾 back(); 返回隊尾元素
是否為空白 empty(); 空返回1 非空返回0
大小 size(); 返回元素個數
e.g.
1 #include<iostream> 2 #include<stdio.h> 3 #include<stack> 4 #include<queue> 5 using namespace std; 6 struct node 7 { 8 int a, b; 9 /*bool operator <(const node&x)const10 {11 if (a == x.a)return b < x.b;12 return a < x.a;13 }*/14 };15 int main()16 {17 stack<int>sa; //聲明一個stack <棧中儲存的資料類型> 變數名;18 stack<node>sb; //也可以放結構體19 queue<int>q;20 for (int i = 0; i < 10; i++)21 {22 sa.push(i);23 q.push(i);24 }25 printf("size of the stack sa is %d\n", sa.size());26 printf("size of the queue q is %d\n", q.size());27 cout << "elements in sa are:\n";28 while (!sa.empty()) //若當前容器非空,則輸出第一個,再將第一個刪去29 {30 cout << sa.top()<<endl;31 sa.pop();32 } 33 cout << "elements in q are:\n";34 while (!q.empty())35 {36 cout << q.front()<<endl;37 q.pop();38 }39 }
輸出結果:
size of the stack sa is 10
size of the queue q is 10
elements in sa are:
9
8
7
6
5
4
3
2
1
0
elements in q are:
0
1
2
3
4
5
6
7
8
9
c++STL(棧、隊列)