在c ++ 17中,我们可以轻松地获得参数包的累积乘积,如下所示:
template<typename... Xs> constexpr std::array<int, sizeof...(Xs)+1> cumulative_product(int x0, Xs... xs) {
return {x0, x0 *= xs ...};
}
constexpr auto cp = cumulative_product(1,2,3,4); // -> 1, 2, 6, 24
是否有类似的优雅方法来获得反序参数的乘积-> [4,12,24,24]?
注意::在原始问题中,我的预期结果错误(24,6,2,1)+问题的措词不正确。因此,在这里无法反转输出数组。
当然要赋予输入参数相同的顺序。
我已经尝试过并使用fold表达式,但是由于我无法在return语句中直接找到一种解决方法,因此它使代码的大小迅速膨胀。