gpt4 book ai didi

c++ - C++11 中更优雅的 boost 积累?

转载 作者:太空狗 更新时间:2023-10-29 20:55:13 28 4
gpt4 key购买 nike

boost docs以此作为如何使用 boost::accumulate 的示例:

// The data for which we wish to calculate statistical properties:
std::vector< double > data( /* stuff */ );

// The accumulator set which will calculate the properties for us:
accumulator_set< double, features< tag::tail<left> > > acc(
tag::tail<left>::cache_size = 4 );

// Use std::for_each to accumulate the statistical properties:
std::for_each( data.begin(), data.end(), bind<void>( ref(acc), _1 ) );

在 C++11/14 中,是否有更优雅的方法来使用基于范围的循环或 lambda 编写此代码?

最佳答案

我能想到的有两种方法,如下:

std::vector< double > data = {2.1, 2.2, 3.3, 4.4, 5.5};
accumulator_set< double, features< tag::tail<left> > > acc(tag::tail<left>::cache_size = 4);

for_each(data.begin(), data.end(), [&acc](double y){ acc(y); });

std::vector< double > data = {2.1, 2.2, 3.3, 4.4, 5.5};
accumulator_set< double, features< tag::tail<left> > > acc(tag::tail<left>::cache_size = 4);

for (auto y : data)
acc(y);

关于c++ - C++11 中更优雅的 boost 积累?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36360558/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com