首页 文章

C排序类型矢量

提问于
浏览
0

我有一个名为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

    从您发布的非常短的代码片段中可以看出,您首先将 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 .

相关问题