在优先级队列中推送元素时,二进制表达式的操作数无效 我是C++编程新手。我必须创建一个名为Container的类的优先级队列。所以我这样写:
在main.cpp:在优先级队列中推送元素时,二进制表达式的操作数无效 我是C++编程新手。我必须创建一个名为Container的类的优先级队列。所以我这样写:,c++,c++11,priority-queue,c++-standard-library,C++,C++11,Priority Queue,C++ Standard Library,在main.cpp: struct Comp{ bool operator() (const Container& a, const Container& b){ return a<b; } }; std::priority_queue<Container, std::list<Container>, Comp> containers; class Container{ public: friend bo
struct Comp{
bool operator() (const Container& a, const Container& b){
return a<b;
}
};
std::priority_queue<Container, std::list<Container>, Comp> containers;
class Container{
public:
friend bool operator< (const Container& a, const Container& b);
//...
};
bool operator<(const Container &a, const Container &b) {
return a.y<b.y;
}
struct Comp{
布尔运算符()(常量容器和a、常量容器和b){
返回一个它告诉您您的It无法计算两个list::interator类型的迭代器之间的差
如果您查看priority\u queue
的要求,它会说容器的迭代器“必须满足LegacyRandomAccessIterator的要求。”
list
s迭代器不是随机访问;它们是双向的。因此,不能将list
用作优先级队列的底层容器
简单修复:使用deque
而不是列表
std::priority\u queue containers;
它告诉您,您的It无法计算两个类型为list::interator
的迭代器之间的差异
如果您查看priority\u queue
的要求,它会说容器的迭代器“必须满足LegacyRandomAccessIterator的要求。”
list
s迭代器不是随机访问;它们是双向的。因此,不能将list
用作优先级队列的底层容器
简单修复:使用deque
而不是列表
std::priority\u队列容器;
error: invalid operands to binary expression ('std::__1::__list_iterator<Container, void *>' and 'std::__1::__list_iterator<Container, void *>')
__sift_up<_Comp_ref>(__first, __last, __comp, __last - __first);