priority_queue 函数库使用

听完左神的课,自己来用stl来实现一下大小根堆,顺便加深一下印象
C++库中带有priority_queue<>函数库可以直接拿来用,默认是大根堆

实现小根堆的时候,很多大神介绍了重载运算符的方法,但是,我自己并不打算用这种方法
大神的讲解

#include<bits/stdc++.h>
using namespace std ;

priority_queue<int> qi ; /// 大根堆的定义

int a[5] = {3,5,9,6,2} ;

struct cmp
{
    bool operator()(int a , int b)
    {
        return  a>b ;
    }
};

int main()
{
    priority_queue<int,vector<int>,cmp> qq ; /// 小根堆的定义,这里重载了cmp,用来实现小根堆
    for(int i = 0 ; i < 5 ; i ++) /// 
    {
        qi.push(a[i]) ;
    }
    for(int i = 0 ; i < 5 ; i ++)
    {
        cout << qi.top() << endl;
        qi.pop() ;
    }
    cout << endl;
    for(int i = 0 ; i < 5 ; i ++)
    {
        qq.push(a[i]) ;
    }
    for(int i = 0 ; i < 5 ; i ++)
    {
        cout << qq.top() << endl;
        qq.pop() ;
    }
    return 0 ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
priority_queue是C++标准库中的一个容器适配器,它提供了一种基于优先级的元素访问方式。它内部使用堆数据结构来实现,保证了插入和删除操作的时间复杂度都是O(logN)。 priority_queue使用非常简单,首先需要包含头文件<queue>,然后可以通过以下方式定义一个priority_queue对象: ```cpp #include <queue> std::priority_queue<int> pq; // 默认构造函数,创建一个空的priority_queue,元素类型为int ``` 可以看到,priority_queue可以存储任意类型的元素,只需要在尖括号中指定元素类型即可。 接下来,可以使用以下几个常用的成员函数来操作priority_queue: 1. push(element):将元素element插入到priority_queue中。 2. pop():删除priority_queue中的顶部元素。 3. top():返回priority_queue中的顶部元素,即最大(或最小)值。 4. size():返回priority_queue中元素的个数。 5. empty():判断priority_queue是否为空。 需要注意的是,默认情况下,priority_queue是按照元素的降序进行排列的,即最大值位于顶部。如果需要按照升序排列,可以使用自定义比较函数或者重载元素类型的小于运算符。 以下是一个示例代码,演示了如何使用priority_queue: ```cpp #include <iostream> #include <queue> int main() { std::priority_queue<int> pq; pq.push(10); pq.push(30); pq.push(20); while (!pq.empty()) { std::cout << pq.top() << " "; pq.pop(); } return 0; } ``` 输出结果为:30 20 10,即按照降序排列输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值