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}
在排序中意味着什么?函数指针还是其他什么?我无法找出要搜索的关键字。
答案 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
);
}
作为参数传递的函数没有“函数名称” - 它是匿名的。这是一个有用的抽象,因为所需要的只是传递的功能(名称无关紧要)。