Tableaux 2D déclarés statiquement en C en tant que membres de données de classe
En C, il est possible de créer des classes qui incorporent 2 déclarées statiquement tableaux dimensionnels en tant que membres de données. Cette approche diffère de l'allocation dynamique, où la mémoire du tableau est réservée dynamiquement pendant l'exécution.
Pour y parvenir, un conteneur vectoriel peut être utilisé à l'intérieur de la classe avec des mécanismes d'indexation appropriés. Voici un exemple :
class Array2D { public: vector<int> v; int nc; Array2D(int NR, int NC) : v(NR * NC), nc(NC) {} int* operator[](int r) { return &v[r * nc]; } };
Dans cet exemple, la classe contient un vecteur v et un entier nc représentant le nombre de colonnes. Le constructeur est utilisé pour initialiser le vecteur avec la taille appropriée et stocker le nombre de colonnes.
L'opérateur [] est redéfini pour fournir une interface permettant d'accéder efficacement aux éléments du tableau. Lorsque vous accédez à array2d[r][c], il calcule en interne l'index dans le vecteur en fonction de r (ligne) et c (colonne). Cela élimine le besoin d'une allocation de mémoire séparée pour le tableau.
Exemple d'utilisation :
Array2D array2d(2, 3); array2d[0][0] = 1; array2d[1][2] = 6;
Cette méthode vous permet de créer une classe C qui se comporte comme un tableau 2D tout en conservant le avantages de l'allocation de mémoire contiguë, réduisant les échecs de cache et améliorant les performances.
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!