假设我有一个像这样的简单类:
class Test {
public:
Test(int reference) { m_reference = reference; }
void feed(int x) { m_data.push_back(x); }
int get() { return m_data.front(); }
private:
int m_reference;
std::vector<int> m_data;
};
而不是 a std::vector
,我想将值输入 a std::priority_queue
。而不是返回.front()
值,我想基于自定义比较函数.get()
的.top()
值。priority_queue
假设这个自定义比较被计算为 value 和 instance 之间的绝对差reference
。
我不知道如何std::priority_queue
在我的类属性中声明。
我努力了:
bool compare(int a, int b) {
return std::abs(a - m_reference) < std::abs(b - m_reference);
}
接着:
std::priority_queue<int, std::vector<int>, decltype(&Test::compare)> m_priority;
我也尝试过std::function
这样,但这会引发多个错误:
std::function<bool(int a, int b)>> pq([this](int a, int b){
return std::abs(a - m_reference) < std::abs(b - m_reference);
});
但这不起作用(参见Repl.it)。
知道如何解决这个问题吗?