Comment initialiser et désinitialiser un tableau de caractères multidimensionnel en C++?Tableau de caractères multidimensionnel
Répondre
Lisez le FAQ - vous y trouverez tout ce dont vous avez besoin!
Création:
alloués statiquement:
char mda[ dim1_size ][ dim2_size ]...[ dimn_size ];
alloué dynamiquement: appels. Nested new[]
Initialisation:
pour les boucles Nested; autant de for
que de dimensions.
Unitialisation: Voulez-vous dire Destruction?
Allocation statique: le compilateur le fait lorsque le cadre de la pile est déroulé (ou pour les variables globales - lorsque le programme s'arrête).
Dynamiquement alloué:
Using nested delete[].
vous pouvez initialiser un tableau multidimensionnel comme ceci:
int grid[2][3] = {1, 3, 5, 2, 4, 6};
dans ce cas, les valeurs séparées serait:
grid[0, 0]: 1
grid[0, 1]: 3
grid[0, 2]: 5
grid[1, 0]: 2
grid[1, 1]: 4
grid[1, 2]: 6
Un extrait rapide - il compile en g ++.
int rows = 10;
int cols = 10;
char** array = new char*[rows];
for(int i = 0; i < cols; ++i) {
array[i] = new char[cols];
}
//do stuff with array
for(int i = 0; i < cols; ++i) {
delete array[i];
}
delete array;
Oh mon dieu c'est affreux. C'est C avec un déguisement en C++! –
Ce qui est intéressant, et cela nécessite un regard sérieux.
La réponse donnée par roo est largement utilisé, mais j'aime son observation - juste parce qu'il compile ne je pense pas que cela fonctionne signifie
une meilleure solution serait d'allouer un bloc contigious de mémoire (rows * cols) longtemps et ensuite le traiter comme un tableau 2D?
Il serait intéressant d'allouer un bloc de mémoire contigu mais, ce faisant, vous perdez toute possibilité de changer la taille de votre tableau dans chaque dimension. –
Je vous suggère d'utiliser la bibliothèque Boost.Multi_Array. La dimension du tableau doit être fournie au moment de la compilation, mais les tailles ne sont utilisées qu'à l'exécution. Cela signifie que vous avez les avantages de l'allocation dynamique sans avoir à faire face à des problèmes de mémoire. Voici l'exemple de Boost documentation.
int
main() {
// Create a 3D array that is 3 x 4 x 2
typedef boost::multi_array<double, 3> array_type;
typedef array_type::index index;
array_type A(boost::extents[3][4][2]);
// Assign values to the elements
int values = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
A[i][j][k] = values++;
// Verify values
int verify = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
assert(A[i][j][k] == verify++);
return 0;
}
Je l'ai appris avec une planche de tic tac toe
const int ROW = 3;
const int COLUMN = 3;
char board [ROW] [COLUMN] = {{'O', 'X', 'O'},
{'X', 'X', 'X'},
{'X', 'O', 'X'}};
J'espère que cela a aidé.
- 1. Tableau multidimensionnel PHP
- 2. Trier un tableau multidimensionnel
- 3. tableau multidimensionnel Javascript délivre
- 4. Tableau associatif multidimensionnel dans VB.NET
- 5. Sérialisation Java d'un tableau multidimensionnel
- 6. tableau multidimensionnel en C++ hang
- 7. multidimensionnel mixte associatif/décalage de tableau numérique
- 8. Itère un tableau multidimensionnel en Python
- 9. vérifier si un tableau est multidimensionnel
- 10. Comment diviser un tableau multidimensionnel en PHP?
- 11. Tableau multidimensionnel question: D'où viennent les [enfants]?
- 12. boucle PHP foreach par tableau multidimensionnel
- 13. convertir un tableau 1D à tableau multidimensionnel en PHP
- 14. Sélectionnez l'élément inconnu du tableau multidimensionnel à l'aide de LINQ
- 15. Déplacement d'un ordre de touches dans un tableau multidimensionnel
- 16. Java- vérification de la valeur dans un tableau multidimensionnel
- 17. tableaux de tri dans un tableau multidimensionnel par clé
- 18. place plusieurs champs similaires dans un tableau multidimensionnel - php mysql
- 19. nœuds feuilles Extrait du tableau multidimensionnel en PHP
- 20. accès par colonne avec tableau multidimensionnel en php
- 21. Comment faire un tableau multidimensionnel dynamique en ruby?
- 22. Comment itérer des lignes et des colonnes d'un tableau multidimensionnel?
- 23. Trier et valeurs magasin de tableau multidimensionnel dans le nouveau tableau dans Ruby
- 24. Façon sans boucle en C# de diviser une chaîne en tableau multidimensionnel ou tableau jagged
- 25. K & R: tableau de pointeurs de caractères
- 26. Comment créer un tableau multidimensionnel pour le stockage de données volumineuses dans Obj-c?
- 27. Mettez la chaîne dans un tableau multidimensionnel et trier puis par sous-valeur dans le tableau
- 28. Comment effectuer une méthode sur chaque objet d'un tableau multidimensionnel, directement sur le tableau?
- 29. Tri d'un tableau multidimensionnel en utilisant array_multisort, où vous ne connaissez pas les dimensions du tableau
- 30. Remplacer les caractères chaîne du tableau
Dépend de la langue. Et que voulez-vous dire par uninitialize? – tehvan
Je dois être aveugle, vous avez déjà spécifié en C++: S – tehvan
La balise de devoirs est obsolète. –