首页 > 解决方案 > 是否可以使用多个仿函数创建优先级队列?

问题描述

如果我有一个结构和 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;
     }
}

该代码将按年龄对队列进行排序,但我想知道是否可以以某种方式添加辅助仿函数。

标签: c++stdpriority-queuefunctor

解决方案


只需先比较年龄,如果年龄相等,再比较身高。

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
     }
}

推荐阅读