转换 C++11

Transform C++11

我有一个代码计算一定数量的点数的总和,乘以所问问题的总数,除以每 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 中(假设您没有编写他们自己)。