2.1.5 priority_queue
priority_queue优先队列与普通队列不同,总是将优先级最高(或最低)的元素置于队列的前端。默认情况下,priority_queue使用最大堆实现,即优先级最高的元素将最先被移除。 一、结构priority_queue只维护堆顶的元素,即队列的队头(top),这种数据结构适用于需要快速访问最优先处理项的场景。 小根堆:最小值优先,堆顶top()永远是当前最小元素 priority_queue<int,vector<int>,greater<int>> 大根堆:最大值优先,堆顶top()永远是当前最大元素 priority_queue<int,vector<int>,less<int>>(默认) 而priority_queue底层就是堆,通常是用vector存成数组,再映射成完全二叉树。 以大堆栈压入 3,2,8,8,10为例: 以大根堆为例,只保证每个父节点 ≥ 子节点,且堆顶(根)最大。 维护过程: push(x):先放数组末尾,...
