首页 > 后端开发 > C++ > 如何在 C 11 中创建包含 N 个元素的 Constexpr 数组?

如何在 C 11 中创建包含 N 个元素的 Constexpr 数组?

DDD
发布: 2024-12-04 12:17:22
原创
255 人浏览过

How Can I Create a Constexpr Array of N Elements in C  11?

在 C 11 中创建 N 个元素的 Constexpr 数组

在 C 11 中,创建 N 个元素的 constexpr 数组并不像该语言的更高版本中那么简单。虽然 constexpr 数组是在 C 11 中引入的,但它们的功能是有限的,并且不可能使用与 C 14 及更高版本中相同的语法创建可变长度的 constexpr 数组。

但是,使用一些先进的技术和constexpr 函数,可以在 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';
}
登录后复制

在此示例中,我们定义constexpr 函数 A用 0 到 N-1 的值初始化长度为 N 的数组。该函数被声明为 constexpr 以确保其执行时间在编译时已知。

在 main 函数中,我们创建 A 的实例;并打印数组的值。由于数组是 constexpr,编译器可以在编译时确定其值,确保不会对数组执行运行时计算。

这种方法允许我们在 C 11 中创建 constexpr 数组,即使语法比该语言的更高版本更复杂。

以上是如何在 C 11 中创建包含 N 个元素的 Constexpr 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板