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}
意思?函数指针还是其他什么?我无法弄清楚要搜索的关键字。
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 表达式,下标运算符是它的介绍。Lambda 表达式是在 C++11 中引入的。
我不能说它比上面链接的 MSDN 文章更好,它定义了一个 lambda 表达式,如下所示:
是在它被调用或作为参数传递给函数的位置定义匿名函数对象的一种方便方法。
这是一个 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
);
}
作为参数传递的函数没有“函数名”——它是匿名的。这是一个有用的抽象,因为只需要传递的功能(名称无关紧要)。