Maison > développement back-end > C++ > Comment puis-je déclarer statiquement un tableau 2D en tant que membre de données de classe en C ?

Comment puis-je déclarer statiquement un tableau 2D en tant que membre de données de classe en C ?

Linda Hamilton
Libérer: 2024-12-11 00:56:12
original
1016 Les gens l'ont consulté

How Can I Statically Declare a 2D Array as a Class Data Member in C  ?

Déclarer statiquement un tableau 2D en tant que membre de données de classe

Votre objectif est de créer une classe de grille avec des données membres NR, NC et un tableau 2D Coordonnées [NR][NC]. Vous souhaitez initialiser NR et NC via le constructeur de classe et éviter l'allocation dynamique de mémoire pour optimiser l'utilisation de la mémoire et minimiser les échecs de cache.

Pour y parvenir, envisagez d'utiliser std::vector, qui fournit une allocation de mémoire contiguë. Voici une version modifiée de votre extrait de code :

class grid {
public:
    vector<double> coordinates;
    unsigned NR, NC;

    grid(unsigned NR, unsigned NC) : NR(NR), NC(NC), coordinates(NR * NC) {}

    double& operator()(unsigned r, unsigned c) { return coordinates[r * NC + c]; }
};

int main() {
    grid g(2, 3);
    g(0, 0) = 1;
    g(1, 2) = 6;
}
Copier après la connexion

Cette classe définit un tableau 2D à l'aide d'un vecteur contigu. La méthode Operator() fournit un moyen pratique d'accéder aux éléments à l'aide d'index de lignes et de colonnes.

Cette approche évite l'allocation dynamique, fournit une allocation de mémoire contiguë et garantit une utilisation efficace de la mémoire.

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