3

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

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());

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

这个错误是什么意思?

谢谢

4

1 回答 1

11

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

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

还要注意const Book&参数的变化,避免复制。

于 2010-04-28T08:38:56.287 回答