Ошибка сортировки структуры C ++ - PullRequest
3 голосов
/ 28 апреля 2010

Я пытаюсь отсортировать вектор пользовательской структуры в 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());

это дает мне исключение "неверный оператор <" </p>

Что означает эта ошибка?

Спасибо

1 Ответ

11 голосов
/ 28 апреля 2010

sort ожидает функцию, которая возвращает bool, что верно, если lhs предшествует rhs:

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

Также обратите внимание на изменение параметров const Book&, чтобы избежать копирования.

...