有人可以向我解释什么[](int i){return i%2 == 0; }是什么意思?

洛伦佐

在以下STL算法的示例代码中std::all_of

'[](int i){返回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函数,用于检查是否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"; 
    }
}

输出:

所有数字都是偶数


注:这是拉姆达方法是一个免费的功能,它并没有捕捉到任何东西。

PS:该lambda方法与STL无关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章