在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();
}
}