Maison > développement back-end > C++ > Comment créer un tableau de base zéro Constexpr en C 11 ?

Comment créer un tableau de base zéro Constexpr en C 11 ?

Linda Hamilton
Libérer: 2024-12-02 17:22:14
original
850 Les gens l'ont consulté

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

Génération de tableaux Constexpr en C 11

Question :

Comment pouvons-nous créer un constexpr tableau de base zéro jusqu'à une taille spécifiée en C 11 ?

Réponse :

En C 14, cette tâche est devenue simple grâce à l'introduction des constructeurs et des boucles constexpr. Cependant, en C 11, nous devons adopter une approche plus complexe.

Mise en œuvre :

  1. Étape 1 : Utiliser une classe Modèle avec un constructeur Constexpr

    Nous définissons un modèle de classe A qui prend la taille du tableau N comme un paramètre de modèle. Il comprend un constructeur constexpr qui initialise un tableau arr de taille N.

  2. Étape 2 : Remplir le tableau

    Au sein du constructeur constexpr, nous itérer jusqu'à N, en attribuant à chaque élément de arr son index correspondant. Cela nous permet de remplir le tableau avec la séquence 0 à n-1.

  3. Étape 3 : Utilisation

    Nous pouvons instancier la classe A modèle pour obtenir une instance du tableau constexpr. En accédant à son membre arr, nous pouvons interagir avec ses éléments.

Voici un exemple de code démontrant cette approche en 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';
}
Copier après la connexion

Ce code affichera le séquence attendue de 0 à 3, démontrant la création réussie d'un tableau de base zéro constexpr en C 11.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal