📅  最后修改于: 2023-12-03 14:47:43.077000             🧑  作者: Mango
STL(Standard Template Library)中的优先级队列(Priority Queue)允许重复值。
优先级队列是一个能够以一定顺序存储元素的容器,其中每个元素都有一个相关的优先级。STL中的优先级队列是基于堆(Heap)实现的,具有以下特点:
<
运算符。虽然在插入时可以插入相同优先级的元素,但优先级队列在弹出元素时,会始终弹出优先级最高的元素。因此,如果插入的元素具有相同的优先级,那么它们在被弹出时的顺序是不确定的。
下面是使用STL优先级队列允许重复值的示例代码片段:
#include <iostream>
#include <queue>
int main() {
std::priority_queue<int> pq;
pq.push(3);
pq.push(1);
pq.push(5);
pq.push(3); // 允许插入重复值
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
return 0;
}
以上代码片段中,我们创建了一个优先级队列 pq
,并依次插入了4个整数。注意到第1个和第4个插入的元素具有相同的优先级。在弹出元素时,我们可以看到输出的顺序为 5 3 3 1
,其中优先级最高的元素 5
最先被弹出。
总结:STL优先级队列允许插入重复值,但在弹出时按照优先级最高的顺序进行。