Maison > développement back-end > C++ > Comment puis-je implémenter des tableaux 2D déclarés statiquement en tant que membres de données de classe en C ?

Comment puis-je implémenter des tableaux 2D déclarés statiquement en tant que membres de données de classe en C ?

Patricia Arquette
Libérer: 2024-12-26 21:44:09
original
117 Les gens l'ont consulté

How Can I Implement Statically Declared 2-D Arrays as Class Data Members in C  ?

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

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

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!

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