C++ std::vector和algorithm::sort,下面的代码有什么问题

C++ std::vector和algorithm::sort,下面的代码有什么问题,c++,stl,vector,C++,Stl,Vector,我正在尝试使用算法::sort对std::vector进行排序,但遇到运行时错误 无效运算符您的比较函数始终返回true 您的比较函数似乎总是返回true。偶尔返回false可能是个好主意。而且(严肃地说)比较(x.y)坐标并不像看上去那么简单-在实现它之前,您可能需要考虑一下。如果您使用的是std::vector,则必须重载“ struct compareX { bool operator ()(const Point& left, const Point& right

我正在尝试使用
算法::sort
对std::vector进行排序,但遇到运行时错误
无效运算符您的比较函数始终返回true

您的比较函数似乎总是返回true。偶尔返回false可能是个好主意。而且(严肃地说)比较(x.y)坐标并不像看上去那么简单-在实现它之前,您可能需要考虑一下。

如果您使用的是
std::vector
,则必须重载“

struct compareX {
    bool operator ()(const Point& left, const Point& right) const {
        return left.x_cord < right.x_cord;
    }
};
struct compareY {
    bool operator ()(const Point& left, const Point& right) const {
        return left->y_cord < right->y_cord;
    }
};
struct compareX{
布尔运算符()(常数点和左、常数点和右)常数{
返回左x_线<右x_线;
}
};
结构比较{
布尔运算符()(常数点和左、常数点和右)常数{
返回左->y_线<右->y_线;
}
};
代码的问题是

  • 比较类接受指针而不是被排序的对象(如果
    std::vector
    已排序,即不接受
    std::vector
    )。如果您正在对指针向量进行排序,那么就可以了

  • 比较类包含错误输入-始终返回true(如前所述)


  • 比较使用
    运行时错误?您是否注意到比较函数总是返回true?
    
    std::sort( posVector.begin(), posVector.end(), compareX());
    
    struct compareX {
        bool operator ()(const Point& left, const Point& right) const {
            return left.x_cord < right.x_cord;
        }
    };
    struct compareY {
        bool operator ()(const Point& left, const Point& right) const {
            return left->y_cord < right->y_cord;
        }
    };