我有一个名为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更明确。

10-08 10:48