priority_queue优先队列的使用

news/2024/7/7 19:12:15

优先队列,本质上就是一个最大堆或者最小堆,最大堆就是优先级最大的那个数在堆顶,最小堆就是优先级最小的在堆顶,这里的优先级指的是数值的大小,也可以通过自己重载<号来重新定义比较方式
头文件 : #include < queue >
定义 : priority_queue < typename > q;
这里的typename可以是任意的数据型:int,double,string,char,还可以是自己写的结构体
使用:

q.push(x)  //插入一个元素,复杂度log(n)
q.top()    //访问堆顶元素
q.pop()    //把堆顶元素出队,复杂度log(n)
q.empty()  //若q为空,返回true,否则返回false
q.size()   //返回q长度

声明方式
1:普通声明

	priority_queue<int> q;    //默认的最大堆,优先级最大的在队首
	//priority_queue< int,vector<int>,greater<int> >   //定义最小堆,优先级小的在队首

2:结构体声明:

	struct Node{
		int x,y;
		bool operator <(const Node &n) const
		{
			return x<n.x;     //根据x的值来定义优先级,最大堆
			//return x>n.x;   //最小堆
		}
	};

http://www.niftyadmin.cn/n/1037396.html

相关文章

java练习notepad工具下载安装步骤

我推荐用这个地址 Notepad 8.1.9 官方中文版 然后点击打开下载好的安装包 然后点OK 下一步 我接受 然后修改一下目录 然后点击下一步 下一步 安装 完成 打开后 点击设置 首选项 左侧点击 新建 默认语言选java 编码选第一个 然后点击关闭即可 然后用notepad打开java文…

冒泡排序及其优化

冒泡核心思想&#xff1a; 冒泡排序向右边冒泡的话&#xff0c;结果就是最后一个数就是最大的 冒泡排序向左边冒泡的话&#xff0c;结果就是第一个数就是最小的 这个好像不是冒泡吧。。。 private static void maoPaoSort(int [] arr){for(int i0;i<arr.length;i){for(int…

set的使用

set&#xff0c;顾名思义&#xff0c;它是一个集合&#xff0c;它当中没有重复的元素&#xff0c;并按照顺序排列好 使用场景 : set一般用于查找问题中的查找有无&#xff0c;即给定一个元素判断这个元素是否存在于这个数组中。还可以用来删除数组中特定的数&#xff08;因为复…

LongAdder是啥?

本文源码研究基于jdk1.8 阅读ConcurrentHashMap源码的时候发现了很多CountCell&#xff0c;看不太懂&#xff0c;所以先来研究一下LongAdder。 LongAdder是啥&#xff1f; LongAdder是用来做线程安全的i自增操作的&#xff0c;我们知道AtomicLong也可以现实这个功能&#xff0…

ConcurrentHashMap-属性解释

ConcurrentHashMap-属性解释 代表hashmap最大能存这么多个键值对 高两位目的是为了控制&#xff1f;知道的评论区说下 private static final int MAXIMUM_CAPACITY 1 << 30;代表hashmap默认容量 private static final int DEFAULT_CAPACITY 16;数组的最大长度 stat…

map的使用

map&#xff0c;我们一般称为字典或是映射&#xff0c;它提供了一对一的映射关系 使用场景 : map用于查找问题中某个元素出现的次数&#xff0c;比如问‘a’这个元素在数组中出现了多少次。这个只是最基本的应用场景&#xff0c;由于可以有任意的键值对的对应&#xff0c;map的…

ConcurrentHashMap-put

ConcurrentHashMap-put 推荐先读&#xff1a;ConcurrentHashMap属性解释 putVal主流程 initTable初始化table分支流程 helpTransfer帮助扩容分支流程 putVal主流程锁住桶后&#xff0c;链表插入/更新 putVal主流程锁住桶后&#xff0c;红黑树插入/更新 putVal主流程ad…

java变量使用,基础类型使用

先来了解java的基础比较常用的几种基础数据类型 int 整数类型 如 10 20 30 String 字符串类型 如 “你好” double 小数点类型 如 99.99 boolean 只有两个值 true 或 false true代表真 false代表假 定义变量的方法 为 类型 变量名 值 例如 int min 13; 这里我们定义了 一个…