我有一个名为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)
但是它说食谱不是类型名称。我该如何对向量进行排序?
最佳答案
从您发布的一小段代码中可以看出,您先将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
更明确。