C++【stack/queue】用法和例子

糖醋麻辣蝦發表於2019-01-30
Stack的常用基本操作:
  1. s.push() // 壓棧
  2. s.emplace() // 插入,相當於push(目前掌握的唯一區別是emplace可以自行呼叫建構函式,push不行)
  3. s.empty() // 判斷棧空
  4. s.top() // 訪問棧頂元素
  5. s.pop() // 退棧
  6. s.size() // 記錄棧大小
/***
 * stack的基本操作
 * Jan 1 2019
 */


int main() {
       stack<double> s; // 定義一個棧  
       for (int i = 0; i < 10; i++)
              s.push(i);  // 壓棧
       s.emplace(10);  // 相當於插入push
       while (!s.empty()) // 判斷棧空
       {
              printf("%lf\n", s.top()); // 訪問棧頂元素
              s.pop(); // 彈出棧
       }
       cout << "棧內的元素的個數為:" << s.size() << endl; // 棧大小
       return 0;
}

/// 輸出結果
10.000000
9.000000
8.000000
7.000000
6.000000
5.000000
4.000000
3.000000
2.000000
1.000000
0.000000
棧內的元素的個數為:0


Queue的常用基本操作:
  1. q.push() // 入隊
  2. q.emplace() // 插入,相當於push(區別同Stack)
  3. q.empty() // 判斷隊空
  4. q.front() // 訪問隊頭元素
  5. q.back() // 訪問隊尾元素
  6. q.pop() // 出隊
  7. q.size() // 記錄隊大小

 1 /***
 2  * queue的基本操作
 3  * Jan 1 2019
 4  */
 5 
 6 
 7 int main() {
 8     queue<double> q; // 定義一個佇列 
 9     for (int i = 0; i < 10; i++)
10         q.push(i);  // 入隊
11     q.emplace(10);  // 相當於插入push
12     printf("%lf\n", q.back()); // 訪問隊尾元素
13     while (!q.empty()) // 判斷隊空
14     {
15         printf("%lf\n", q.front()); // 訪問隊頭元素
16         q.pop(); // 出隊
17     }
18     cout << "隊內的元素的個數為:" << q.size() << endl; // 佇列大小
19     return 0;
20 }

/// 輸出結果
10.000000
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
隊內的元素的個數為:0

 

相關文章