Maison >développement back-end >C++ >Comment créer un tableau Constexpr de 0 à N en C 11 ?

Comment créer un tableau Constexpr de 0 à N en C 11 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-02 09:35:10166parcourir

How to Create a Constexpr Array from 0 to N in C  11?

Création d'un tableau Constexpr s'étendant de 0 à N en C 11

Dans le domaine de la programmation C moderne, le concept de tableaux constexpr a attiré une attention considérable en raison de son caractère sans précédent capacités d'efficacité et d'évaluation au moment de la compilation. Au milieu de cette innovation, une question se pose : comment construire un tableau constexpr allant de 0 à n en C 11 ?

La clé de ce défi réside dans la puissante combinaison de constructeurs constexpr et d'initialisation itérative. Décomposons l'essence de cette approche :

#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';
}

Dans cet extrait de code, nous définissons un constructeur constexpr au sein d'une structure de modèle « A ». Ce constructeur initialise un tableau d'entiers 'arr' de taille N avec des éléments allant de 0 à N-1 à l'aide d'une boucle for.

En instanciant 'A' en tant qu'objet constexpr nommé 'a', nous créons effectivement un Tableau constexpr dont les valeurs sont calculées au moment de la compilation. La boucle suivante parcourt ce tableau, imprimant ses éléments dans le flux de sortie standard.

En résumé, en tirant parti de la polyvalence des constructeurs constexpr et de l'initialisation itérative, nous avons conçu un moyen de construire des tableaux constexpr allant de 0 à n en C 11, démontrant l'efficacité et les prouesses d'évaluation au moment de la compilation qu'offre ce 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!

Déclaration:
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