2

在 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) + 问题的措辞不准确。所以反转输出数组在这里不是一个选项。

当然,给定输入参数的相同顺序。

我已经尝试过使用折叠表达式,但它会迅速增加代码大小,因为我无法直接在 return 语句中找到这样做的方法。

4

0 回答 0