我有一个名为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)
但它说配方不是类型名称。我该如何分类这个载体?
答案 0 :(得分:3)
从您发布的非常短的代码片段中可以看出,您首先使用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
。