C++ C++;排序类类型向量
我有一个名为Recipes.h的结构和一个名为C++ C++;排序类类型向量,c++,sorting,vector,C++,Sorting,Vector,我有一个名为Recipes.h的结构和一个名为vector Recipes的向量。向量包含1个int,每个元素中包含2个字符串(一个字符串名称和一个称为指令的字符串)。但是,我只想按字符串chef_名称对整个向量进行排序。我试过这样做 sort(recipes.begin(),recipes.end(),compare); bool Menu::compare(const recipes* lhs, const recipes* rhs) 但它说食谱不是一个类型名称。如何对该向量进行排序?从您
vector Recipes
的向量。向量包含1个int,每个元素中包含2个字符串(一个字符串名称和一个称为指令的字符串)。但是,我只想按字符串chef_名称对整个向量进行排序。我试过这样做
sort(recipes.begin(),recipes.end(),compare);
bool Menu::compare(const recipes* lhs, const recipes* rhs)
但它说食谱不是一个类型名称。如何对该向量进行排序?从您发布的非常短的代码片段可以看出,您首先将
配方
用作对象,然后用作类型。您的比较函数可能希望改为参数Recipes>const&
。请注意,如果操作不依赖于菜单
类,则最好将此函数声明为静态
成员函数
功能签名应为:
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
从您发布的非常短的代码片段可以看出,您首先将配方
用作对象,然后用作类型。您的比较函数可能希望改为参数Recipes>const&
。请注意,如果操作不依赖于菜单
类,则最好将此函数声明为静态
成员函数
功能签名应为:
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
请显示更多的代码并使用正确的术语。我很确定你的结构
没有被称为配方.h
,你的向量
也没有被称为向量配方
,包括您的类定义和用法。compare
的全称是菜单::compare
…请不要养成只使用一个大写字母差异就将类和变量命名为相同的习惯。请显示更多代码并使用正确的术语。我很确定你的结构
没有被称为配方.h
,你的向量
也没有被称为向量配方
,包括您的类定义和用法。compare
的全名是Menu::compare
…请不要养成习惯,将类和变量命名为相同的名称,只有一个大写字母的差异。我希望签名是静态bool Menu::compare(const Recipes&lhs,const Recipes&rhs)
@mooingduck:我不知怎么忘了这是关于比较函数对象的。修正。我希望签名是静态bool Menu::compare(const Recipes&lhs,const Recipes&rhs)
@Mooing Duck:我不知怎么忘了这是关于比较函数对象的。固定的。