C++ 无法编译boost堆d_ary_堆
我是个新手。我正在尝试使用d_ary_heap。以下是程序片段:C++ 无法编译boost堆d_ary_堆,c++,boost,C++,Boost,我是个新手。我正在尝试使用d_ary_heap。以下是程序片段: #include "boost/heap/d_ary_heap.hpp" #include "boost/heap/priority_queue.hpp" using namespace boost; class c { public: c(size_t count) : _count(count) {} size_t count() const { return _count; } bool op
#include "boost/heap/d_ary_heap.hpp"
#include "boost/heap/priority_queue.hpp"
using namespace boost;
class c {
public:
c(size_t count) : _count(count) {}
size_t count() const { return _count; }
bool operator < (const c& rhs) const { return count() < rhs.count(); }
bool operator == (const c& rhs) const { return count() == rhs.count(); }
private:
size_t _count;
};
int main()
{
heap::d_ary_heap<c, heap::arity<2>> pq;
//heap::priority_queue<c> pq; // This works
c s1(10);
pq.push(s1);
c s2(20);
pq.push(s2);
assert(pq.top() == s2);
return 0;
}
感谢您的帮助。
在Include heap::arity之后包含空格:
heap::d_ary_heap pq;
编译器将>>视为运算符,而不是d\u-ary\u堆的模板声明的一部分
queue.cc: In function 'int main()':
queue.cc:24:44: error: 'pq' was not declared in this scope
queue.cc:24:44: error: template argument 1 is invalid
queue.cc:24:34: error: template argument 2 is invalid
heap::d_ary_heap<c, heap::arity<2> > pq;