温馨提示×

c++ priority_queue的常用操作有哪些

c++
小樊
85
2024-09-04 19:05:11
栏目: 编程语言

C++中的priority_queue是一个容器适配器,用于实现优先级队列。优先级队列允许我们在队列中插入元素,并按照元素的优先级进行排序。以下是priority_queue的一些常用操作:

  1. 构造函数
std::priority_queue<int> pq;  // 创建一个空的优先级队列,存储int类型的元素
  1. 插入元素
pq.push(5);  // 将元素5插入到优先级队列中
  1. 删除元素
pq.pop();  // 删除优先级最高(默认为最大)的元素

注意:pop()操作只会删除优先级最高的元素,而不会返回它。如果你想要获取被删除的元素,需要在调用pop()之前调用top()

  1. 查看优先级最高的元素
int topElement = pq.top();  // 返回优先级最高的元素,但不删除它
  1. 检查优先级队列是否为空
bool isEmpty = pq.empty();  // 如果优先级队列为空,返回true;否则返回false
  1. 获取优先级队列的大小
size_t size = pq.size();  // 返回优先级队列中的元素数量
  1. 比较函数

默认情况下,priority_queue使用std::less比较函数对元素进行排序,这意味着优先级最高的元素是最大的。如果你想要改变这种行为,例如使优先级最高的元素成为最小的,你可以提供自定义的比较函数。

std::priority_queue<int, std::vector<int>, std::greater<int>> minPQ;  // 创建一个优先级队列,优先级最高的元素是最小的
  1. 其他操作

priority_queue还支持其他操作,如emplace()(原地构造元素并插入队列)和swap()(交换两个优先级队列的内容),但它们的使用场景相对较少。

请注意,priority_queue不支持随机访问迭代器,因此你不能直接访问队列中的任意元素。如果你需要这样做,可能需要考虑使用其他数据结构,如std::setstd::multiset

0