Transform C++11

Transform C++11

本文关键字:C++11 Transform      更新时间:2023-10-16

我有一个代码,可以计算一定数量的分数之和,乘以所问问题的总数,除以20。问题是,一定数量的点的总和是向量类型的,并且问题总数是两倍。所以我需要把向量转换成二重。我得到这个代码

return std::accumulate(begin(chiffre), end(chiffre), 0.0, [](double a, double b)->double { return a + b * 20;}) / nbtotal;

但这是C++11,我的程序没有使用C++11,所以我需要将此代码转换为C++98。我真的不知道该怎么办。如果有人能帮忙,不要犹豫!对不起我的英语!!:)

您可以创建一个正常的函数:

static double myAdd(double a, double b) {
    return a + b * 20;
} 
//...
return std::accumulate(chiffre.begin(), chiffre.end(), 0.0, myAdd) / nbtotal;

您还必须将begin(chiffre)更改为chiffre.begin()end也是如此,因为这些全局函数只出现在C++11中(假设您不是自己编写的)。