C++ 结构排序错误

标签 c++ struct sorting functor

我正在尝试在 C++ 中对自定义结构的 vector 进行排序

struct Book{
public:int H,W,V,i;
};

用一个简单的仿函数

class CompareHeight
{
public:
    int operator() (Book lhs,Book rhs)
    {
        return lhs.H-rhs.H; 
    }
};

尝试时:

vector<Book> books(X);
.....
sort(books.begin(),books.end(), CompareHeight());

它给了我异常“无效的运算符<”

这个错误是什么意思?

谢谢

最佳答案

sort 需要一个返回 bool 的函数,如果 lhs 在 rhs 之前,则为真:

bool operator() (const Book& lhs, const Book& rhs)
{
    return lhs.H < rhs.H; 
}

另请注意对 const Book& 参数的更改,以避免复制。

关于C++ 结构排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2727890/

相关文章:

c++ - 将错误代码枚举与 std::error_code 进行比较

c# - 为什么 DllImport 不适用于 "__Internal"?

c - 关于C结构体中某种类型元素的问题

c++ - 在 C++ 中转发声明指向结构的指针

c++ - 为什么按降序排序与升序排序时快速排序需要更长的时间

c++ - 使用 vector C++进行二进制搜索

c++ - 我的程序是 "Killed"

c++ - C++中的特殊枚举

c++ - 排序玩家输入

javascript - JS中对象的频率排序数组,如果频率匹配则根据对象属性排序