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 :
É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.
É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.
É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'; }
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!