1
我使用STL priority_queue
並給出一個自定義比較器類,其構造函數接受指向存儲優先級的向量的指針,因此 -錯誤:請求「..」中的成員'..',屬於非類別類型
#include <iostream>
#include <queue> // std::priority_queue
#include <vector> // std::vector
using namespace std;
class CompareReachDist
{
const vector<float> *reach_dists;
public:
CompareReachDist(const vector<float> *input)
{
reach_dists = input;
}
bool operator() (const size_t &l, const size_t &r) const
{
return (reach_dists->at(l) > reach_dists->at(r));
}
};
typedef priority_queue<size_t, vector<size_t>, CompareReachDist> pq;
vector<float> reach_dists;
int main()
{
pq seeds(CompareReachDist(&reach_dists));
bool isEmpty = seeds.empty();
return 0;
}
然而,在編譯我得到的錯誤:
error: request for member 'empty' in 'seeds', which is of non-class type 'pq(CompareReachDist&) {aka std::priority_queue<unsigned int std::vector<unsigned int>, CompareReachDist>(CompareReachDist&)}'
我要去哪裏錯了?
啊,是的。我現在看到它。你認爲我應該重構我的對象聲明,以便編譯器不再將它用於函數聲明嗎? –
@ ameya.dubey - 好的,更喜歡C++ 11初始化語法。或者爲'CompareReachDist'參數引入一個命名變量。 – StoryTeller
@ ameya.dubey - 確實如此。很高興有幫助。 – StoryTeller