STL算法五

5.优先队列作为堆
在有些算法设计种用到堆,堆采用STL的优先队列来实现,优先级的高低由队列中数据元素的关系函数(比较运算符)确定,很多情况下需要重载关系函数。
优先队列(堆)头文件:#include< queue >
大根堆定义:priority_queue< int >pq
小根堆定义:priority_queue< int ,vector< int >,greater< int > >pq
(注意最后两个“>”符号不要连在一起,否则会被很多(但不是所有)编译器误认为是‘>>’运算符)
操作:
push() 元素入队
pop() 队首元素出队
top() 取队首元素
empty() 如果队列为空,则返回true(1),否则返回false(0)
size() 返回优先队列中拥有的元素个数
(1) 元素为内置数据类型的堆
对于C/C++内置数据,默认时以less(小于关系函数)作为关系函数,值越大,优先级越高(即大根堆),可以改为grater作为关系函数,这样值越大优先级越低(即小根堆)。
例如:
以下程序中pq1为大根堆(默认),pq2为小根堆(通过grater实现):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值