栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ queue

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ queue

首先说明一点,C++中stack和queue并不是容器,只是一套接口。内部用什么容器来实现是可以指定的,默认是stack>和queue>,也可以用stack>等等

下面是具体用法

#include//头文件

priority_queue que;//定义

que.push(x);//插入元素x

cout << que.size();//元素个数

while (!que.empty()) {//是否为空
cout << que.top() < 

默认是用大顶堆实现优先队列

如接连push 9,8,0,-5,1后会输出9,8,1,0,-5

若想改为小顶堆,可以设置greater参数(默认是less,大顶堆);如果想用vector存储,也可以自己设定,如下所示

priority_queue,greater> que;
//这边 greater对应小顶堆,默认参数是less,对应大顶堆;
//vector是自己设定的存储数据的容器

此外,也可以自定义元素类型,这里需要对运算符进行重载,否则会报错

struct node{
    int x,y; 
    bool operator< (const node &b)const {
        return this->x < b.x;
    }
};

priority_queue que;
que.push((node){x,y});

如相继push(node){1,9}、(node){3,6}、(node){-2,4}、(node){8,2}后

不断输出que.top().x同时que.pop(),会输出8,3,1,-2,按照降序排列

若想从小到大排,可以修改重载函数,将"this->x < b.x"改成"this->x > b.x"

bool operator< (const node &b)const {
        return this->x > b.x;
    }

想看视频演示的可以参考b站视频,讲的很清楚,C++-STL-priority_queue(堆/优先队列)的简单使用_哔哩哔哩_bilibili

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号