STL priority_queue
을 사용하고 생성자가 우선 순위를 저장하는 벡터에 대한 포인터를 가져 오는 사용자 지정 비교기 클래스를 제공합니다. 내가 잘못 가고오류 : '..'의 '..'멤버에 대한 요청입니다. 비 클래스 타입입니다
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&)}'
: - 따라서 그러나
#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;
}
, 컴파일에 나는 오류가
?
아, 네. 나는 그것을 지금 본다. 컴파일러가 더 이상 함수 선언을 위해 객체 선언을 재구성해야한다고 생각합니까? –
@ ameya.dubey - C++ 11 초기화 구문을 선호합니다. 또는 CompareReachDist 매개 변수에 명명 된 변수를 도입하십시오. – StoryTeller
@ ameya.dubey - 실제로 그렇게합니다. 도와 줘서 기뻐. – StoryTeller