I am trying to sort a vector of custom struct in C++
struct Book{
public:int H,W,V,i;
};
with a si开发者_如何学Gomple functor
class CompareHeight
{
public:
int operator() (Book lhs,Book rhs)
{
return lhs.H-rhs.H;
}
};
when trying :
vector<Book> books(X);
.....
sort(books.begin(),books.end(), CompareHeight());
it gives me exception "invalid operator <"
What is the meaning of this error?
Thanks
sort
expects a function that returns bool
, which is true iff the lhs precedes the rhs:
bool operator() (const Book& lhs, const Book& rhs)
{
return lhs.H < rhs.H;
}
Also note the change to const Book&
parameters, to avoid copying.
精彩评论