c++ - 是否可以使用多个仿函数创建优先级队列?
问题描述
如果我有一个结构和 PQ 有没有办法让我按多个变量对堆进行排序。所以第一个年龄,然后如果它们相等,它就会有高度。
Struct Person{
int age;
int height;
int weight;
};
priority_queue<Person, vector<Person>, age_functor>
Struct age_functor{
bool operator() (Person const& one, Person const& two){
return one.age < two.age;
}
}
该代码将按年龄对队列进行排序,但我想知道是否可以以某种方式添加辅助仿函数。
解决方案
只需先比较年龄,如果年龄相等,再比较身高。
Struct age_height_functor{
bool operator() (Person const& one, Person const& two){
return
one.age < two.age || // compare age
(one.age == two.age && // if ages are equal
one.height < two.height); // compare height
}
}
推荐阅读
- jquery - Ajax 向 Controller 发送空值,即使我可以看到 Ajax 中的值不为空
- c# - 如何在 asp.net 中创建下载按钮?
- java - 无法在 Hibernate JPA 中创建请求的服务 [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
- html - 有人按下按钮后如何重定向到页面?元标记让您只需几秒钟即可完成
- html - 无法使用 CSS/HTML 正确对齐
- python - 使用 librosa.effects.trim 命令执行静音删除很困难
- algorithm - 拜占庭将军问题不可解性的模拟证明如何正确?
- html - 如何在 CSS 中将图片整齐地放置在框的左侧
- c# - 如何根据字典条目换出 Unity2D 中的精灵?
- python - pygame 传球到球门