如何创建包含以下值 f(0)、f(1)、...、f(N-1) 的 const std::array,其中 f 是任何函数:static constexpr size_t f(int index)? 当我确切知道 N 时,我显然可以写
const std::array<size_t, 5> a = {f(0), f(1), f(2), f(3), f(4)}
最佳答案
创建需要任意复杂初始化的常量的一般技术是简单地编写一个返回所需值的函数,然后在常量的初始化程序中调用它。例如:
template <typename T, size_t N>
array<T, N> init_from_f() {
array<T, N> a;
for (size_t i = 0; i < N; ++i)
a[i] = f(i);
return a;
}
const auto const_array = init_from_f<sometype, 42>();
关于c++ - 如何用基于函数的值填充 const std::array<size_t, N>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34143943/