cou*_*ech 6 c++ functional-programming metaprogramming
在我的大学新学期开始,我再一次"被迫"退出抽象,并探索低水平编程的深水c++.我的思绪已经部分地受到折叠,高阶函数等的影响,我在写作中没有找到任何乐趣,例如:
bool allEven = true;
for(int i = 0; i < arr.length; i++){
if (arr[i] % 2 != 0){
allEven = false;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
当我知道我可以写val allEven = arr forall (_ % 2 == 0).GWT,而是编译Java源JavaScript来源它将编译Scala或Haskell或F#以C++来源,但因为我不相信像这存在,我想有一些东西......乐于助人.例如,我很欣赏建议的anon函数.
目前尚不完全清楚您真正要求的是什么,但如果您尝试编写更像其他代码的 C++,您可以这样做:
bool allEven =
std::accumulate(arr.begin(), arr.end(), [](bool a, int i) {return a && i & 1==0; }, 1);
Run Code Online (Sandbox Code Playgroud)
这确实使用了 lambda,这是 C++0x 中的新功能。如果您使用的是不支持 lambda 的旧编译器,您可以考虑使用 Boost Lambda(在这种情况下,您的代码将更接近您给出的示例)。
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |