C++ 在C+中升序排序的正确方法是什么+;重载比较符号时“<&引用;

C++ 在C+中升序排序的正确方法是什么+;重载比较符号时“<&引用;,c++,sorting,stl,C++,Sorting,Stl,我想对一个向量进行排序,其中元素类型是我在下面的代码中定义的类 struct Node { int _x; int _y; int _h; Node(int x, int y, int h) : _x(x), _y(y), _h(h) {} bool operator<(const Node &p) const { return _h > p._h; // > or < } }; vector<

我想对一个向量进行排序,其中元素类型是我在下面的代码中定义的类

struct Node {
    int _x;
    int _y;
    int _h;
    Node(int x, int y, int h) : _x(x), _y(y), _h(h) {}
    bool operator<(const Node &p) const {
        return _h > p._h; // > or <
    }
};

vector<Node> v; //priority_queue<Node> p;
...//push some objects
sort(v.begin(), v.end());
struct节点{
int_x;
国际;
int_h;
节点(intx,inty,inth):x(x),y(y),h(h){
布尔运算符p._h;/>或<
}
};
向量v//优先级队列p;
…//推送一些对象
排序(v.begin(),v.end());
非常奇怪的是,有时我在重载函数中使用“return _h>p._h”来获得升序,但有时是降序。可能不是在向量中,而是在其他使用比较函数的数据结构中,例如优先级队列、映射等

是否有详细的文件介绍比较功能

解决了。我想我的记忆力不好。

比较函数对象(即满足 返回的属性(比较)的要求​如果第一个参数为 少于(即在第二个之前订购)


使用这样的函数
sort(v.begin(),v.end())升序排序。

你能举一个例子,说明你“可能有时”会得到不同的顺序吗?@tobi303对不起,我忘了,但我肯定我遇到过好几次排序问题。看起来我犯了一个愚蠢的错误。谢谢,但是如果重载函数位于类中,如上图所示,哪个参数是第一个?@vinllen
这个->\u h
是左手边(第一个)。因此,您应该更改return语句的比较。