C ++ Класс сортировки Тип Вектор - PullRequest
0 голосов
/ 17 октября 2011

У меня есть структура с именем Recipes.h и вектор с именем vector<Recipes> recipes. Вектор содержит 1 int и 2 строки в каждом элементе (строковое имя шеф-повара и строку с именем инструкции). Однако я хочу отсортировать весь вектор ТОЛЬКО по строке chef_name. Я пытался сделать что-то вроде этого

sort(recipes.begin(),recipes.end(),compare);
bool Menu::compare(const recipes* lhs, const recipes* rhs)

Но там написано, что рецепты - это не имя типа. Как мне отсортировать этот вектор?

1 Ответ

3 голосов
/ 17 октября 2011

Из очень короткого фрагмента кода, который вы разместили, видно, что вы используете recipes сначала как объект, а затем как тип. Ваша функция сравнения, вероятно, вместо этого хочет использовать параметры Recipes > const&. Обратите внимание, что если операция не зависит от класса Menu, было бы лучше объявить эту функцию как static функцию-член.

Подпись функции должна быть:

static bool Menu::compare(const Recipes& lhs, const Recipes& rhs)

и тогда вы будете использовать его так:

sort(recipes.begin(),recipes.end(),compare); ...or...
sort(recipes.begin(),recipes.end(),&Menu::compare);

Оба последних утверждения одинаковы, я думаю, что более поздние более ясны в отношении compare.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...