Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;排序类类型向量_C++_Sorting_Vector - Fatal编程技术网

C++ C++;排序类类型向量

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) 但它说食谱不是一个类型名称。如何对该向量进行排序?从您

我有一个名为Recipes.h的结构和一个名为
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:我不知怎么忘了这是关于比较函数对象的。固定的。