在下面STL算法的示例代码中std::all_of
,
什么是'[](int i){ return i % 2 == 0; }'是什么意思?
int main() {
std::vector<int> v{10, 2, 4, 6};
if (std::all_of(v.begin(), v.end(), [](int i){ return i % 2 == 0; })) {
std::cout << "All numbers are even\n";
}
else{
std::cout << "All numbers are not even\n";
}
}
这是一个lambda function检查 i
是否偶数。如果 i
是偶数,它将返回 true,否则返回 false。
它的逻辑等同于:
#include <algorithm>
#include <iostream>
bool isEven(int i) {
return i % 2 == 0;
}
int main() {
std::vector<int> v{10, 2, 4, 6};
if (std::all_of(v.begin(), v.end(), isEven)) {
std::cout << "All numbers are even\n";
}
else{
std::cout << "All numbers are not even\n";
}
}
输出:
All numbers are even
注意:这是 lambda 方法是一个自由函数,它不捕获任何东西。
PS:那个lambda方法与STL无关。