编译时生成的数组

时间:2018-10-11 09:04:36

标签: c++ arrays metaprogramming

我想在编译时创建一个数组。 问题是,它会很大(int arr [8000000]),因此使用可变变量或嵌套结构进行递归将不起作用。全局数组必须在创建时进行初始化,这并不是简单的填充{0}。有谁知道如何做吗?就此帖子而言,可以说我想拥有arr [i] = i。

1 个答案:

答案 0 :(得分:0)

您可以使用constexpr函数,例如:

constexpr auto make_huge_array()
{
    std::array<int, 8'000'000> res{};

    std::size_t i = 0;
    for (auto& e : res) {
         e = i++;
    }
    return res;
}

Demo