堆STL和重载运算符
2024-08-26 10:00:46
- 大根堆:
1.priority_queue<int> q;【默认
2. priority_queue< node,vector<node>,less<node> > q;【自带比较函数
- 小根堆:
priority_queue< node,vector<node>,greater<node> > q;【自带比较函数
- 重载运算符:
1.定义struct node 之后重载
这是小根堆
priority_queue<node>q;//或 priority_queue< node,vector<node>,less<node> >q;
bool operator<(node a,node b)//或写做(const node &a,const, node &b) 更快
{
return a.y>b.y;//以y从小到大排序
}
2.在定义struct node时重载
struct node
{
int id,v;
bool operator<(const node &a) const{
return v<a.v;//以v从大到小排序
}
};
priority_queue<node>q;
3.定义友元操作类重载函数
struct node
{
int v;
friend bool operator<(const node &a,const node &b){
return a.v<b.v; //按v从大到小排列
}
};
priority_queue<node>q;
- 自定义比较函数模板结构
struct cmp
{
bool operator ()(const node &a, const node &b)
{
return a.v>b.v;// 按照v从小到大排列
}
};
priority_queue<node,vector<node>,cmp> q;
最新文章
- iPhone socket 编程之BSD Socket篇
- linux环境变量LD_LIBRARY_PATH
- Oracle Goldengate和Oracle Data Integrator的初步认识
- s:iterator标签的使用
- c++ 虚继承
- Objective-c 集合对象
- 程序媛也话Android 之 自定义控件(垂直方向滑动条)
- 修改/home内子目录的名字
- 关于JAVA正则匹配空白字符的问题
- 判断ssh远程命令是否执行结束
- AJAX请求返回HTTP 400 错误 - 请求无效 (Bad request)
- centos7目录统计之du命令
- centos 7安装jdk、tomcat
- v-model双向数据绑定
- collections之deque【双向队列】与Queue【单向队列】
- javascript模式(2)--模块模式
- Linq循环DataTable,使用匿名对象取出需要的列
- SQL 添加删除列
- 分布式网上商城项目-solr搜索功能错误
- SpringBoot学习:整合shiro(rememberMe记住我功能)