c++ - 如何用基于函数的值填充 const std::array<size_t, N>

标签 c++ c++11 c++14

如何创建包含以下值 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/

相关文章:

c++ - 在模板中使用模板别名而不是模板

c++ - 在 VS2017 中使用 SFML 安装 CMake

c++ - 使用预处理器宏构建用于抛出 std::exception 的信息消息的简单方法

c++ - lambda 函数捕获和修改自己的引用

c++ 带方括号的函数调用

c++ - 什么时候使用成员变量指针

C++ - 错误:为 OpenCV 的 cv::Scalar::all 创建 C 包装器时出现预期类型说明符

c++ - 为类型列表创建别名并将其作为模板参数传递

c++ - 使用 runge_kutta4 的高维数组

c++ - GNUMakefile 和 gcc : resolving the order of conflicting "-std=c++" requirements