gpt4 book ai didi

c++ - 数组元素到可变参数模板参数

转载 作者:行者123 更新时间:2023-11-30 01:08:32 27 4
gpt4 key购买 nike

我有一个关于如何完成以下行为的问题,或者它是否可以在 C++ 中实现。假设我有这个可变参数函数

template<typename T, typename...Pack>
T sum(T a, Pack... pack) {
return a + sum(pack...);
}

template<typename T>
T sum(T a) {
return a;
}

然后我有一个数组

double array[5];

有没有办法让我去做类似的事情

sum(array[0], array[1], array[2], array[3], array[4]);

没有明确地在每个元素中进行硬编码?原因是,我正在尝试实现诸如

double array[N];
sum(array[0], array[1], array[2], ..., array[N-1]);

其中 N 在编译时设置。

最佳答案

借助索引序列技巧,您可以:

template <class T, size_t N, size_t... Is>
T array_sum_impl(T (&arr)[N], std::index_sequence<Is...>) {
return sum(arr[Is]...);
}

template <class T, size_t N>
T array_sum(T (&arr)[N]) {
return array_sum_impl(arr, std::make_index_sequence<N>{});
}

但最好还是按常规操作:

auto sum = std::accumulate(std::begin(array), std::end(array), 0.0);

关于c++ - 数组元素到可变参数模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com