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; }
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!