下标运算符在排序比较函数中的含义是什么?

时间:2016-03-10 13:05:18

标签: sorting compare subscript-operator

struct pair{
    int first;
    int second;
}
vector<pair> v;
sort(v.begin(), v.end(), [](pair p1, pair p2){return p1.first < p2.first});

[](pair p1, pair p2){return p1.first < p2.first}在排序中意味着什么?函数指针还是其他什么?我无法找出要搜索的关键字。

2 个答案:

答案 0 :(得分:2)

那是Lambda Expression和下标运算符是介绍它的原因。 Lambda表达式是在C ++ 11中引入的。

我无法比上面链接的MSDN文章更好地定义lambda表达式,如下所示:

  

是一种方便的方法,可以在调用它或作为参数传递给函数的位置定义匿名函数对象。

答案 1 :(得分:1)

这是一个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
    );
}
  1. 参考:https://msdn.microsoft.com/en-us/library/dd293608.aspx
  2. 作为参数传递的函数没有“函数名称” - 它是匿名的。这是一个有用的抽象,因为所需要的只是传递的功能(名称无关紧要)。