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;
}
};