如何声明priority_queue的自定义比较功能

时间:2019-10-12 15:15:49

标签: c++

我的任务是重新排列数组,以使与值k最接近的数字在priority_queue中具有更高的优先级。

我曾经尝试过这段代码,但是似乎我无处放置参数:

#include <iostream>
#include <Windows.h>
#include <queue>
#include <math.h>
using namespace std;
bool cmp(int a, int b, int k) {
    return (abs(a - k) < abs(b - k));
}
void main() {
    priority_queue<int, vector<int>, decltype(cmp)> a;
}

1 个答案:

答案 0 :(得分:0)

cmp是带有operator()(int a, int b)->bool

的类
#include <iostream>
#include <queue>
#include <cmath>

using namespace std;

struct cmp
{
    bool operator()(int a, int b)
    { 
        return (abs(a - k) < abs(b - k));
    }
    int k = 5;
};

int main() 
{
    priority_queue<int, vector<int>,cmp> a;
}