C ++结构排序错误

C++ struct sorting error

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

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

一个简单的函子

1
2
3
4
5
6
7
8
class CompareHeight
{
public:
    int operator() (Book lhs,Book rhs)
    {
        return lhs.H-rhs.H;
    }
};

尝试时:

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

它给我异常"无效的运算符<"

此错误是什么意思?

谢谢


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

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

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