一、priority_queue使用
1. 头文件
#include <queue>
2. 优先输出大数据
priority_queue<Type, Container, Functional>
Type
数据类型
Container
保存数据的容器
Functional
元素的比较方式
如果不写后两个参数,那么容器默认用的是vector,比较方式默认用operator<,也就是优先队列是大顶堆,队头元素最大。
priority_queue<int> q;
q.push(1);
q.push(2);
q.push(3);
while(!q.empty()){
cout << q.top() << " ";
q.pop();
}
// 答案:
3 2 1
3. 自定义优先级
#include<iostream>
#include<queue>
using namespace std;
// 方式一:运算符<重载
struct tmp1{
int x;
tmp1(int a){
x = a;
}
bool operator<(const tmp1& a) const
{
return x < a.x;
}
}
// 方式二:重写运算函数
struct tmp2{
bool operator()(tmp1 a, tmp1 b){
return a.x < b.x;
}
};
int main()
{
tmp1 a(1);
tmp1 b(2);
tmp1 c(3);
priority_queue<tmp1> q1;
q1.push(a);
q1.push(b);
q1.push(c);
while(!q1.empty()){
cout << q.top().x << " ";
q1.pop();
}
return 0;
}
二、去重问题的一般tips
数组遍历过程中,如果需要去重,获取不相同数字,可使用下面这段代码
sort(nums.begin(), nums.end());
for(int i = 0; i < nums.size(); i++){
// 每次取不同的值
if(i > 0 && nums[i] == nums[i-1]){ // 去重
continue;
}
cout << nums[i] << " ";
}
三、有序哈希表
blabla