一句话理解
priority_queue 是堆,默认最大的在 top。
为什么要学
每次取最值、Huffman、Dijkstra 都会用。
讲解
pq.push(x); pq.top(); pq.pop(); 默认大根堆。小根堆:priority_queue<int, vector
不能直接改堆里某个值,通常是塞一个新的进去,旧的懒惰删除。
例子
priority_queue<int> pq;
pq.push(3);
pq.push(9);
pq.push(5);
cout << pq.top();
输出:
9
默认最大元在堆顶。
常见错误
- 以为是排序后的 vector 可以随便下标访问。
- 要小根堆却用了默认。