std::priority_queue
是 C++ 標準庫中的一個容器適配器,它提供了對元素進行排序和訪問的功能
然而,如果你需要遍歷 std::priority_queue
中的所有元素,可以通過以下方法實現:
std::priority_queue
中的元素移動到一個臨時的容器(例如 std::vector
)中。這里有一個示例:
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
int main() {
std::priority_queue<int> pq;
pq.push(5);
pq.push(8);
pq.push(3);
pq.push(1);
// 將 priority_queue 中的元素移動到 vector 中
std::vector<int> temp_vec;
while (!pq.empty()) {
temp_vec.push_back(pq.top());
pq.pop();
}
// 對 vector 進行排序(從小到大)
std::sort(temp_vec.begin(), temp_vec.end());
// 使用迭代器遍歷 vector
for (auto it = temp_vec.begin(); it != temp_vec.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
這段代碼首先將 std::priority_queue
中的元素移動到一個 std::vector
中,然后對 std::vector
進行排序,最后使用迭代器遍歷 std::vector
。注意,這種方法會改變 std::priority_queue
的內部狀態,因為我們在將元素移動到 std::vector
時會不斷地調用 pop()
函數。如果你需要保留原始的 std::priority_queue
,可以在操作之前創建一個副本。