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
Sorting 排序比较函数中的下标运算符是什么意思? 结构对{ int优先; int秒; } 向量v; 排序(v.begin(),v.end(),[](对p1,对p2){返回p1.first_Sorting_Compare_Subscript Operator - Fatal编程技术网

Sorting 排序比较函数中的下标运算符是什么意思? 结构对{ int优先; int秒; } 向量v; 排序(v.begin(),v.end(),[](对p1,对p2){返回p1.first

Sorting 排序比较函数中的下标运算符是什么意思? 结构对{ int优先; int秒; } 向量v; 排序(v.begin(),v.end(),[](对p1,对p2){返回p1.first,sorting,compare,subscript-operator,Sorting,Compare,Subscript Operator,[](对p1,对p2){return p1.first

[](对p1,对p2){return p1.first
在排序中是什么意思?函数指针还是其他什么?我想不出要搜索的关键字。

这是一个,下标运算符就是引入它的。Lambda表达式是在C++11中引入的

上面链接的MSDN文章对lambda表达式的定义如下:

是一种在调用匿名函数对象或将其作为参数传递给函数的位置定义匿名函数对象的方便方法


这是一个lambda表达式。见下例:

struct pair{
    int first;
    int second;
}
vector<pair> v;
sort(v.begin(), v.end(), [](pair p1, pair p2){return p1.first < p2.first});
void abssort(浮点*x,无符号n){
标准::排序(x,x+n,
//Lambda表达式开始
[](浮动a、浮动b){
返回(标准::abs(a)<标准::abs(b));
}//lambda表达式的结尾
);
}
  • 参考:
  • 作为参数传递的函数没有“函数名”-它是匿名的。这是一个有用的抽象,因为所需要的只是传递的功能(名称无关紧要)

    void abssort(float* x, unsigned n) {
        std::sort(x, x + n,
            // Lambda expression begins
            [](float a, float b) {
                return (std::abs(a) < std::abs(b));
            } // end of lambda expression
        );
    }