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++_Sorting - Fatal编程技术网

C++ 根据特定字段对结构的向量进行排序

C++ 根据特定字段对结构的向量进行排序,c++,sorting,C++,Sorting,目前,我正在尝试根据特定字段对结构向量进行排序。我已经为使用排序函数设置了一个自定义比较函数。然而,我得到了一些错误 代码: a) 使用带有lambda符号的排序函数,如下所示(如果您使用的是c++11) sort(vecData.begin(),vecData.end(),[](const Play&x,const Play&y){return(x.relevance

目前,我正在尝试根据特定字段对结构向量进行排序。我已经为使用排序函数设置了一个自定义比较函数。然而,我得到了一些错误

代码:

a) 使用带有lambda符号的排序函数,如下所示(如果您使用的是c++11)

sort(vecData.begin(),vecData.end(),[](const Play&x,const Play&y){return(x.relevance
工作代码:

b) 使比较器以静态方式工作


虽然这是一个老问题,但为了将来读者的利益,我想指出,在C++20即将推出的范围库中,借助投影,可以根据特定字段直接排序:

ranges::sort(vecData, ranges::less, &Play::relevance);

这避免了指定两个迭代器或编写自定义比较函数或lambda的需要

使
customCompare
静态。
    error C3867: 'List::customCompare': function call missing argument list; use '&List::customCompare' to create a pointer to member
    error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided
static bool customCompare(const Play &x, const Play &y)
 sort(vecData.begin(),vecData.end(), [](const Play &x, const Play &y){ return (x.relevance < y.relevance);});
ranges::sort(vecData, ranges::less, &Play::relevance);