首页 >后端开发 >C++ >如何在 C 11 中创建 Constexpr 从零开始的数组?

如何在 C 11 中创建 Constexpr 从零开始的数组?

Linda Hamilton
Linda Hamilton原创
2024-12-02 17:22:14967浏览

How to Create a Constexpr Zero-Based Array in C  11?

C 11 中的 Constexpr 数组生成

问题:

我们如何创建一个 constexpr C 中从零开始的数组到指定大小11?

答案:

在 C 14 中,由于引入了 constexpr 构造函数和循环,此任务变得简单。然而,在 C 11 中,我们需要采用更复杂的方法。

实现:

  1. 第 1 步:使用类带有 Constexpr 构造函数的模板

    我们定义一个类模板 A 将数组大小 N 作为模板参数。它包含一个 constexpr 构造函数,用于初始化大小为 N 的数组 arr。

  2. 第 2 步:填充数组

    在 constexpr 构造函数中,我们迭代至 N,为 arr 的每个元素分配其相应的索引。这允许我们用 0 到 n-1 的序列填充数组。

  3. 第 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn