草庐IT

accumulate

全部标签

c++ - accumulate 的 Functor 有什么要求?

我在这里写了一个答案:https://stackoverflow.com/a/44481507/2642059使用accumulate.仿函数必须是二进制的,带有如下签名:Retop(constauto&a,constauto&b)但是:Thesignaturedoesnotneedtohaveconst&对二元仿函数的要求是:Mustnotinvalidateanyiterators,includingtheenditerators,ormodifyanyelementsoftherangeinvolved当积累到的对象本身就是一个容器时,我不清楚对仿函数的要求。例如,是否允许这样的

c++ - 使用 std::accumulate 计算 vector 元素总和的最准确方法是什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++floatprecisionquestion我遇到了一个问题,即使用std::accumulate确定三种方法中最精确的方法来计算vector元素之和,vector元素之和只能是正数。1)doublesum(vector&v){returnaccumulate(v.begin(),v.end(),0.0);}2)doublesum(vector&v){sort(v.begin(),v.end());returnaccumulate(v.begin(),v.end(),0.0);}3)doublesum(

c++ - 我们应该如何在函数中使用带有 std::accumulate 的模板来通过考虑模板而不是 "init"来返回正确的类型

std::accumulate的返回类型取决于“init”,即如果它是整数,它将返回整数,如果是double,它将返回double。我有一个像这样求和的模板函数:Tmean(std::vectorvector){Tsum=std::accumulate(vector.begin(),vector.end(),X);}我应该用什么代替X? 最佳答案 您可以只使用T{},它是默认构造的T。例如Tsum=std::accumulate(vector.begin(),vector.end(),T{});如果你需要用一些初始值来初始化它,你可

c++ - 如何为关联容器应用 std::accumulate 算法?

对于像std::map这样的映射,我如何计算它的值总和?实际上,我是用仿函数和std::for_each算法实现的。但我也想使用std::accumulate算法来实现。我不知道如何将它应用到std::map。这可能吗?structAccumurator:std::unary_function,void>{Accumurator():totalValue_(0){}voidoperator()(conststd::pair&p){totalValue_+=p.second;}intresult()const{returntotalValue_;}inttotalValue_;};int

c++ - 从容器中元素的成员函数中累积结果

我有一个类,有一个返回计数的函数,如下所示:classCTestClass{public://...size_tGetCount()const;//...};在我程序的某处,我有一个该类对象的vector。我有一个函数来获取总计数(CTestClass::GetCount()的结果总和),像普通循环一样实现:size_tsum=0;for(vector::const_iteratorit=v.begin();it!=v.end();++it){sum+=it->GetCount();}我想重构它以使用标准库中可用的设施,于是我想到了accumulate。我已经能够通过使用函数对象(简单

c++ - boost::accumulators::rolling_mean 返回不正确的平均值

环境:VS2013,Boost1.58我写了一些东西,为Boost的累加器提供了一个更友好的界面,它可用于在窗口上投影总和,并计算窗口上的实际滚动平均值。在插入将VS2013作为我们的主要编译器的过程中,此类的单元测试之一开始失败。剥离层,我把它缩小到这个最小的例子:#include#include#includenamespaceba=boost::accumulators;namespacebt=ba::tag;typedefba::accumulator_set>MeanAccumulator;intmain(){MeanAccumulatoracc(bt::rolling_wi

c++ - 使用 std::accumulate 计算部分 vector 的总和

有这个vectorvectorv{1,2,3,4,5,6,7,8,9,10};如何使用accumulate计算它的前半部分的总和(即15)功能?我可以使用仅带有迭代器(而不是数字索引)的for循环来做到这一点吗? 最佳答案 你可以accumulate(v.begin(),v.begin()+int(v.size()/2),0)如果v是您的vector。你也可以写一个循环:intsum=0;for(vector::iteratorit=v.begin();it!=v.begin+int(v.size()/2);++it){sum+=*

c++ - 带行的列 vector - 带 std::accumulate?

为了尽可能地懒惰,我读入了一个矩阵vector>data(rows,vector(columns));并尝试尽可能多地使用STL好东西。我接下来需要做的一件事是计算行均值。在C风格的编程中,这将是vectorrowmeans(data.size());for(inti=0;i在InC++,howtocomputethemeanofavectorofintegersusingavectorviewandgsl_stats_mean?据解释,对于数字vector,您可以在一行中计算vector均值,而无需在每一步都调用size()运算符:doublemean=std::accumulate

【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

文章目录一、元素累加算法-accumulate函数1、函数原型分析2、代码示例二、元素填充算法-fill函数1、函数原型分析2、代码示例一、元素累加算法-accumulate函数1、函数原型分析在C++语言的标准模板库(STL,STLStandardTemplateLibrary)中,提供了accumulate元素累加算法函数用于将一个容器中的元素进行累加操作;accumulate元素累加函数将输入容器的[起始迭代器,终止迭代器)范围内的元素在一个基础值的基础上进行累加,得到一个累加值;最终accumulate函数返回最终累加后的值;accumulate元素累加算法函数原型如下:templat

c++ - 性能差异:std::accumulate vs std::inner_product vs Loop

今天,我想分享一些在尝试实现这个简单操作时让我大吃一惊的事情:我发现了执行相同操作的不同方法:通过使用std::inner_product。实现谓词并使用std::accumulate函数。使用C风格的循环。我想通过使用QuickBench并启用所有优化来执行一些基准测试。首先,我比较了两个具有浮点值的C++替代方案。这是通过使用std::accumulate使用的代码:constautopredicate=[](constdoubleprevious,constdoublecurrent){returnprevious+current*current;};constautoresul