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

   2024-09-30 9630
核心提示:C++中的priority_queue是一个容器适配器,用于实现优先级队列。优先级队列允许我们在队列中插入元素,并按照元素的优先级进行排

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

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

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

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

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

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

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

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号