在 C++ 中,匿名函数通常是通过 lambda 表达式来实现的。lambda 表达式允许你创建一个匿名的函数对象,可以在需要函数对象的地方直接使用,而不需要单独定义函数。
#include <iostream>
int main() {
// lambda 表达式定义一个匿名函数,计算两个整数的和
auto add = [](int a, int b) {
return a + b;
};
// 调用 lambda 表达式计算两个整数的和
int result = add(3, 4);
std::cout << "Result: " << result << std::endl;
return 0;
}
[](int a, int b) { // lambda 表达式
return a + b;
}
它表示一个匿名函数,将这个 lambda 表达式赋值给变量 add,然后可以像调用普通函数一样调用 add 来计算两个整数的和。[]
是捕获列表,用于捕获外部变量。可以是空的[ ],也可以是 [&](按引用捕获所有外部变量)、[=](按值捕获所有外部变量)等。
在 C++ 的 std::sort 函数中,常使用匿名函数来指定自定义的比较函数,从而对元素进行排序。
std::sort(nums.begin(), nums.end(), [](int a, int b) {
// 例如,根据元素的个位数进行升序排序
return a % 10 < b % 10;
});
leetcode 1636
unordered_map<int, int> cnt;
for (int num : nums) {
cnt[num]++;
}
sort(nums.begin(), nums.end(), [&](const int a, const int b) {
if (cnt[a] != cnt[b]) {
return cnt[a] < cnt[b];
}
return a > b;
});
return nums;