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