C 11 中的 Constexpr 数组生成
问题:
我们如何创建一个 constexpr C 中从零开始的数组到指定大小11?
答案:
在 C 14 中,由于引入了 constexpr 构造函数和循环,此任务变得简单。然而,在 C 11 中,我们需要采用更复杂的方法。
实现:
第 1 步:使用类带有 Constexpr 构造函数的模板
我们定义一个类模板 A 将数组大小 N 作为模板参数。它包含一个 constexpr 构造函数,用于初始化大小为 N 的数组 arr。
第 2 步:填充数组
在 constexpr 构造函数中,我们迭代至 N,为 arr 的每个元素分配其相应的索引。这允许我们用 0 到 n-1 的序列填充数组。
第 3 步:用法
我们可以实例化 A 类用于获取 constexpr 数组实例的模板。通过访问其 arr 成员,我们可以与其元素进行交互。
以下是在 C 11 中演示此方法的示例代码:
#include <iostream> template<int N> struct A { constexpr A() : arr() { for (auto i = 0; i != N; ++i) arr[i] = i; } int arr[N]; }; int main() { constexpr auto a = A<4>(); for (auto x : a.arr) std::cout << x << '\n'; }
此代码将输出预期为 0 到 3 的序列,演示了在 C 11 中成功创建 constexpr 从零开始的数组。
以上是如何在 C 11 中创建 Constexpr 从零开始的数组?的详细内容。更多信息请关注PHP中文网其他相关文章!