我正在尝试在 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/