我想知道为什么需要std::accumulate (也就是reduce)第三个参数。对于那些不知道accumulate是什么的人来说,它是这样使用的:int sum = accumulate(V.begin(), V.end(), 0);对accumulate的调用相当于:for (auto x : V) sum += x
我试着用一个简单的for循环,一个std::accumulate和一个手动展开的for循环来计算数组元素的和。正如我所期望的那样,手动展开的循环是最快的,但更有趣的是std::accumulate比简单循环慢得多。这是我的代码,我用带有-O3标志的gcc 4.7编译的。t\t" << result << ", sum = " << sum << std::endl;
sum = 0;
sum = std::accu
std::accumulate和std::reduce做的几乎是一样的事情。of std::reduce总结说明了一切: similar to `std::accumulate`, except out of order 在许多情况下,这些函数应该产生相同的最终结果,并展示相同的整体功能从鸟的角度来看,这里的传统智慧是什么-除非显式优化,否则你应该一直坚持直截了当的std::accumulate吗?还是应该默认使用std::reduce?如果std::reduce (选择默认/未选择执行策略)始终至少与std::accu
std::vector<double> V; V.push_back(3.6); double sum = accumulatethe vector V is " << sum << endl;}向量V的元素之和是9
accumulate这是Cygwin g++编译器的错误,还是我对用于添加vector of d