Maison > développement back-end > C++ > Comment puis-je créer un tableau Constexpr de N éléments en C 11 ?

Comment puis-je créer un tableau Constexpr de N éléments en C 11 ?

DDD
Libérer: 2024-12-04 12:17:22
original
324 Les gens l'ont consulté

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

Création d'un tableau Constexpr de N éléments en C 11

En C 11, créer un tableau constexpr de N éléments n'est pas aussi simple que dans les versions ultérieures du langage . Bien que les tableaux constexpr aient été introduits en C 11, leur fonctionnalité était limitée et il n'est pas possible de créer des tableaux constexpr de longueur variable en utilisant la même syntaxe qu'en C 14 et au-delà.

Cependant, en utilisant certaines techniques avancées et constexpr, il est possible d'obtenir des résultats similaires en C 11. Voici comment procéder :

#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';
}
Copier après la connexion

Dans cet exemple, nous définissons une fonction constexpr Un

Dans la fonction principale, nous créons une instance de A<4> et imprimez les valeurs du tableau. Puisque le tableau est constexpr, le compilateur peut déterminer ses valeurs au moment de la compilation, garantissant ainsi qu'aucun calcul d'exécution n'est effectué pour le tableau.

Cette approche nous permet de créer des tableaux constexpr en C 11, même si la syntaxe est plus complexe que dans les versions ultérieures du langage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal