C ++排序类型向量

时间:2011-10-17 16:52:24

标签: c++ sorting vector

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

答案 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