Tôi đã tự hỏi khi C++ STL priority_queue
sắp xếp chính nó. Tôi có nghĩa là nó insert
nó vào một vị trí chính xác khi bạn push
các mục trong, hoặc nó tự sắp xếp và cung cấp cho bạn các mục ưu tiên cao nhất khi bạn peek
hoặc pop
nó ra? Tôi đang yêu cầu điều này bởi vì priority_queue<int>
của tôi sẽ chứa một chỉ mục cho một mảng có thể có cập nhật giá trị và tôi muốn nó cập nhật khi tôi thực hiện pq.top();
.Khi nào một tiêu chuẩn :: priority_queue <> tự sắp xếp?
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
int main() {
priority_queue<int> pq;
pq.push(2);
pq.push(5); //is the first element 5 now? or will it update again when I top() or pop() it out?
return 0;
}
Cảm ơn.
Bạn có thể khám phá những thuộc tính này dễ dàng, vì như 'map', nó cần một biến vị ngữ so sánh. Nếu bạn cung cấp một vị từ so sánh in ra bàn điều khiển (ví dụ) tại mỗi lần so sánh, bạn sẽ chứng kiến trực tiếp khi nó được gọi (và trên các giá trị nào). –