J'ai une grille de tableau 2d faite comme int GRID [10] [20]; Ce que je veux faire est de supprimer la dernière ligne GRID [LAST] [ALL] et d'insérer une ligne vide au début du tableau. J'ai essayé Googleing ceci sans la chance. MerciInsérer et supprimer des lignes d'un tableau int en C++?
Répondre
Ce n'est pas C++, c'est C. Vous pouvez le faire:
memmove(GRID[1], GRID, sizeof GRID - sizeof GRID[0]); // shift the array
bzero(GRID, sizeof GRID[0]); // zero out the first row
Si vous utilisez C++, il ressemblerait à ceci:
GRID.pop_back(); // remove the last row
GRID.push_front(std::vector<int>(10)); // add an initial row
ou ce (ce qui évite l'allocation la mémoire et la dépendance des paramètres de taille):
rotate(GRID.begin(), GRID.end()-1, GRID.end()); // shift the array
fill(GRID[0].begin(), GRID[0].end(), 0); // zero out the first row
et d'ailleurs en C++, vous pouvez utiliser une file d'attente au lieu d'un vecteur, WHIC h est ce que tu sembles vouloir. En C++, cependant, un conteneur multidimensionnel (vector
ou deque
) est effectivement un tableau de pointeurs vers des tableaux, c'est-à-dire une structure de mémoire discontigue, contrairement à un tableau de tableaux de type C qui réside dans un seul bloc de mémoire.
Les tableaux sont des constructions statiques de taille fixe. Pour obtenir le type de chose que vous cherchez (stockage contigu indexable avec insertion et suppression), vous devriez vérifier le type de conteneur de vecteur STL.
Est-il possible de décaler le tableau entier? – jmasterx
STL vecteur ne serait pas optimal pour cela, il veut probablement une file d'attente/deque. – Potatoswatter
Deque est uniquement contiguë par morceaux, donc ne sera pas un bon match pour quelque chose qui s'attend à gérer des tableaux. –
Neat morceau de code C :) –