C++ STL 容器基本範例實驗測試[03_CPP_STL_Queue ->純C++ Queue範例]

C++ STL 容器基本範例實驗測試[03_CPP_STL_Queue ->純C++ Queue範例]

C++ STL 容器基本範例實驗測試[03_CPP_STL_Queue ->純C++ Queue範例]


資料來源:https://www.cnblogs.com/skyfsm/p/6934246.html

http://larry850806.github.io/2016/06/06/STL1/
http://larry850806.github.io/2016/06/06/STL2/


GITHUB 完整資料: https://github.com/jash-git/Base_CPP_STL_Example [ 包含免安裝開發環境:CodeBlocks 12.11 方便自己測試使用 ]

線上執行:https://www.tutorialspoint.com/compile_cpp_online.php / http://codepad.org/


Queue 就像是排隊買東西

只能往尾巴排,然後從頭出來[先進先出 FIFO]
基本功能有:
    ▲ push: 把一個值加到尾巴
    ▲ pop: 把第一個值移除掉
    ▲ back: 得到尾巴的值
    ▲ front: 得到頭的值
    ▲ size: 取個數
Queue 的優點
    ▲ 可以快速的把頭的值拿掉
Queue 的缺點
    ▲ 只能操作頭跟尾
本範例額外紀錄

    ▲ 自製清空queue函數

#include <iostream>
#include <cstdio>
#include <cstdlib>/* malloc, free, rand */
#include <cstring>/*strncpy .....*/
#include <string>/*c++ string class*/
#include <vector>
#include <queue>

using namespace std;
/*
Queue 就像是排隊買東西
只能往尾巴排,然後從頭出來[先進先出 FIFO]
基本功能有:
    ▲ push: 把一個值加到尾巴
    ▲ pop: 把第一個值移除掉
    ▲ back: 得到尾巴的值
    ▲ front: 得到頭的值
    ▲ size: 取個數
Queue 的優點
    ▲ 可以快速的把頭的值拿掉
Queue 的缺點
    ▲ 只能操作頭跟尾
本範例額外紀錄
    ▲ 自製清空queue函數
    ▲
*/
void Pause()
{
    printf("Press Enter key to continue...");
    fgetc(stdin);
}
void queue_clear( std::queue<int> &q )//清空queue
{
   //https://stackoverflow.com/questions/709146/how-do-i-clear-the-stdqueue-efficiently
   std::queue<int> empty;
   std::swap( q, empty );
}
int main()
{
    queue<int> q;   // 一個空的 queue
    q.push(10);
    q.push(20);
    q.push(30);     // [10, 20, 30]

    cout << q.front() << endl;  // 10
    cout << q.back() << endl;   // 30

    q.pop();                    // 剩下[20, 30]
    cout << q.size() << endl;   // 2
    queue_clear(q);
    cout << q.size() << endl;

    for(int i=0 ; i<5 ; i++){
        q.push(i * 10);
    }                   // 依序存入[0, 10, 20, 30, 40]
    cout << q.size() << endl;//顯示放入數量

    while(q.size() != 0){
        cout << q.front() << endl;
        q.pop();
    }                   // 依序取出 0 10 20 30 40
    cout << q.size() << endl;//顯示最後數量

    Pause();
    return 0;
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *