Maison >développement back-end >C++ >Comment puis-je créer efficacement un tableau bidimensionnel dynamique en C basé sur la saisie de l'utilisateur ?
Création d'un tableau bidimensionnel dynamique basé sur l'entrée de l'utilisateur
Dans certains scénarios de programmation, il peut être nécessaire de créer un tableau bidimensionnel tableau avec une taille déterminée par l’entrée de l’utilisateur. Alors que les tableaux traditionnels nécessitent des dimensions fixes lors de la déclaration, C propose des solutions pour résoudre ce problème.
Option 1 : Utiliser un vecteur de vecteurs
Un vecteur de vecteurs, noté vector
Option 2 : Utilisation d'une classe matricielle personnalisée avec un opérateur de surcharge
Une méthode plus efficace L'approche implique la création d'une classe matricielle personnalisée qui gère l'allocation de mémoire et fournit un opérateur surchargé pour accéder aux éléments. Cette approche garantit une gestion efficace de la mémoire et des temps d'accès plus rapides.
template <class T> class matrix { int columns_; std::vector<T> data; public: matrix(int columns, int rows) : columns_(columns), data(columns * rows) {} T &operator()(int column, int row) { return data[row * columns_ + column]; } };
Dans cette implémentation, la classe matricielle conserve la taille des colonnes et un seul vecteur sous-jacent pour le stockage des données. L'opérateur surchargé() permet une syntaxe pratique de type indice pour accéder aux éléments.
Exemple d'utilisation :
matrix<int> myMatrix(5, 5); // Declare a 5x5 matrix myMatrix(0, 0) = 10; // Set the (0, 0) element to 10 std::cout << myMatrix(0, 0); // Output the (0, 0) element, which should be 10
Conclusion
Cet article a exploré deux options pour créer des tableaux dynamiques bidimensionnels, offrant une alternative plus détaillée et plus performante à l'approche traditionnelle du vecteur de vecteurs. La classe matricielle personnalisée avec opérateur surchargé offre une gestion efficace de la mémoire et une vitesse d'accès améliorée, ce qui en fait un choix approprié pour les scénarios où les performances sont cruciales.
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!