下标运算符在排序比较函数中是什么意思?

what does the subscript operator mean in sort compare function?

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}是什么意思?函数指针或其他什么?我想不出要搜索的关键字。

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

没有比上面链接的 MSDN 文章更好的了,它定义了一个 lambda 表达式,如下所示:

is a convenient way of defining an anonymous function object right at the location where it is invoked or passed as an argument to a function.

这是一个 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

作为参数传递的函数没有 "function name" - 它是匿名的。这是一个有用的抽象,因为所需要的只是传递的功能(名称无关紧要)。