结构堆 我尝试在C++中实现HeopSt排序,它将在其中构造两个整数,并按字典顺序排序它们。然而,VisualStudio向我抛出了一系列错误,比如 Error 8 error C2784: 'bool std::operator <(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)' : could not deduce template argument for 'const std::_Revranit<_RanIt,_Base> &' from 'const lol'

结构堆 我尝试在C++中实现HeopSt排序,它将在其中构造两个整数,并按字典顺序排序它们。然而,VisualStudio向我抛出了一系列错误,比如 Error 8 error C2784: 'bool std::operator <(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)' : could not deduce template argument for 'const std::_Revranit<_RanIt,_Base> &' from 'const lol',c++,algorithm,stl,queue,heapsort,C++,Algorithm,Stl,Queue,Heapsort,我这样声明了优先级队列: priority_queue<lol> q; priority\u队列q; 类型lol需要一个运算符,您是否为lol定义了一个比较运算符?显示它的代码。实际上,我没有。你能告诉我更多关于那是什么吗?我找到了一些关于这些运算符的文章,但我不了解它们是如何工作的。默认情况下,为了对std库中的容器进行排序,它们使用小于运算符:运算符我应该在结构外部定义它吗?@CLU,这无关紧要。如果比较需要访问lol的私有数据,请将其定义为成员函数(运算符 priority_

我这样声明了优先级队列:

priority_queue<lol> q;
priority\u队列q;

类型
lol
需要一个
运算符,您是否为
lol
定义了一个比较运算符?显示它的代码。实际上,我没有。你能告诉我更多关于那是什么吗?我找到了一些关于这些运算符的文章,但我不了解它们是如何工作的。默认情况下,为了对
std
库中的容器进行排序,它们使用小于运算符:
运算符我应该在结构外部定义它吗?@CLU,这无关紧要。如果比较需要访问
lol的私有数据,请将其定义为成员函数(
运算符
priority_queue<lol> q;
bool operator< (const lol &left, const lol &right) {
    return left.num1 < right.num1;
}