C++ 遍歷queue

FBshark發表於2024-04-08

在C++中,std::queue是一個遵循先進先出(FIFO)原則的容器。由於std::queue不提供直接訪問容器內部元素的方法,因此不能直接遍歷。但是,您可以使用一個臨時佇列來遍歷。以下是如何做到這一點的示例程式碼:

#include <iostream>
#include <queue>
 
int main() {
    std::queue<int> q;
 
    // 新增一些元素到佇列
    for (int i = 0; i < 5; ++i) {
        q.push(i);
    }
 
    // 使用臨時佇列遍歷
    std::queue<int> temp(q); // 複製原佇列到臨時佇列
    while (!temp.empty()) {
        std::cout << temp.front() << " ";
        temp.pop(); // 彈出元素以遍歷下一個元素
    }
    std::cout << std::endl;
 
    return 0;
}

這段程式碼會輸出

0 1 2 3 4

請注意,這種方法會複製佇列中的所有元素,如果佇列很大,這可能不是最佳選擇。如果需要頻繁遍歷佇列,可以考慮使用std::deque作為底層容器,然後使用std::queue進行封裝,這樣可以保持佇列的FIFO特性,同時提供遍歷能力。

或者採用這種辦法:

#include<iostream>
#include<queue>

using namespace std;
int main(int argc, char* argv[]) {

   queue<int> myqueue;
   myqueue.push(1);
   myqueue.push(2);
   myqueue.push(3);

   int myqueue_size = myqueue.size();
   for(int i = 0; i < myqueue_size; i++) {   //myqueue_size 必須是固定值
      cout << myqueue.front() << endl;
      myqueue.push(myqueue.front());
      myqueue.pop();
   } 
}

相關文章