Une structure de données séquentielle linéaire appelée tableau est utilisée pour stocker des données homogènes dans une série de régions de mémoire. Un tableau doit avoir certaines fonctionnalités pour insérer, supprimer, parcourir et mettre à jour des éléments efficacement, tout comme le font d'autres structures de données. .Nos tableaux en C++ sont statiques. De plus, C++ propose quelques structures de tableaux dynamiques. Il peut y avoir un maximum de Z éléments pouvant être stockés dans un tableau statique. Et il contient actuellement n éléments. Nous verrons comment pousser les éléments d'un tableau à l'intérieur d'un autre tableau en C++.
Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69] Another given array B = [56, 42, 15, 18, 20, 32] Pushing the elements of B into A, signifies that A becomes: A = [10, 14, 65, 85, 96, 12, 35, 74, 69, 56, 42, 15, 18, 20, 32]
Dans l'exemple ci-dessus, il est évident que nous avons deux tableaux A et B. Pousser B dans A signifie insérer tous les éléments de B dans le tableau A. Ces éléments seront ajoutés à la fin de A. Mais pour y parvenir, nous devons vérifier une chose, c'est-à-dire si les postes vacants restants dans A (c'est-à-dire la taille maximale de A moins le nombre d'éléments existants dans A) sont identiques ou supérieurs au nombre d'éléments dans B. Sinon, nous ne pouvons pas les pousser en A. Jetons un coup d'œil à l'algorithme et au code d'implémentation C++.
prendre le tableau A et B en entrée, le nombre d'éléments n dans A en entrée, le nombre d'éléments m dans B en entrée
Si A a suffisamment d'espace pour accueillir l'ensemble de B, alors
pour chaque élément e dans B, fais
ajouter e au tableau A
Fin du cycle
fin si
tableau de retour A et nouvelle taille n
#include <iostream> # define Z 50 using namespace std; void displayArr(int arr[], int n){ for( int i = 0; i < n; i++ ){ cout << arr[ i ] << ", "; } cout << endl; } void insertAtEnd( int arr[], int &n, int e ){ if( n < Z ) { arr[ n ] = e; } n = n + 1; } void pushArrayToAnother( int A[], int &n, int B[], int m ) { if( (Z - n) >= m ){ for( int i = 0; i < m; i++ ) { insertAtEnd( A, n, B[i] ); } } } int main() { int A[ Z ] = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14}; int n = 12; int B[ Z ] = {56, 84, 23, 12, 17, 19, 65, 32}; int m = 8; cout << "First Array: "; displayArr( A, n ); cout << "Second Array: "; displayArr( B, m ); pushArrayToAnother( A, n, B, m ); cout << "Array A after pushing B:" << endl; displayArr( A, n ); }
First Array: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Second Array: 56, 84, 23, 12, 17, 19, 65, 32, Array A after pushing B: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 56, 84, 23, 12, 17, 19, 65, 32,
La même chose peut être faite en utilisant des vecteurs. Les vecteurs sont des tableaux dynamiques présents en C++ STL. Si nous envisageons d'utiliser des vecteurs, nous n'avons pas besoin de nous soucier de l'espace disponible lors de l'insertion d'éléments. Le vecteur étant dynamique, il ajoute automatiquement de nouveaux emplacements en cas de besoin. L'algorithme est le même que pour la vérification des emplacements disponibles.
prendre le tableau A et B en entrée, le nombre d'éléments n dans A en entrée, le nombre d'éléments m dans B en entrée
pour chaque élément e dans B, fais
ajouter e au tableau A
Fin du cycle
tableau de retour A et nouvelle taille n
#include <iostream> #include <vector> # define Z 50 using namespace std; void displayArr( vector<int> v ){ for( int i = 0; i < v.size() ; i++ ) { cout << v[ i ] << ", "; } cout << endl; } void pushArrayToAnother( vector<int> &A, vector<int> B ){ for( int i = 0; i < B.size() ; i++ ) { A.push_back( B[i] ); } } int main(){ vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14}; vector<int> B = {56, 84, 23, 12, 17, 19, 65, 32}; cout << "First Array: "; displayArr( A ); cout << "Second Array: "; displayArr( B ); pushArrayToAnother( A, B ); cout << "Array A after pushing B:" << endl; displayArr( A ); }
First Array: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Second Array: 56, 84, 23, 12, 17, 19, 65, 32, Array A after pushing B: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 56, 84, 23, 12, 17, 19, 65, 32,
La méthode précédente était un processus manuel. Cependant, nous pouvons utiliser la fonction insert() dans le vecteur STL pour obtenir la même fonctionnalité. La fonction insert() accepte un pointeur de position (à l'aide d'un itérateur) et un itérateur, copie un élément d'un objet conteneur et l'insère à partir de l'index de position dans un autre objet conteneur. Jetons un coup d'œil à l'implémentation C++ pour avoir une vision claire.
#include <iostream> #include <vector> # define Z 50 using namespace std; void displayArr( vector<int> v ){ for( int i = 0; i < v.size() ; i++ ){ cout << v[ i ] << ", "; } cout << endl; } void pushArrayToAnother( vector<int> &A, vector<int> B ) { A.insert( A.end(), B.begin(), B.end() ); } int main() { vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14}; vector<int> B = {56, 84, 23, 12, 17, 19, 65, 32}; cout << "First Array: "; displayArr( A ); cout << "Second Array: "; displayArr( B ); pushArrayToAnother( A, B ); cout << "Array A after pushing B:" << endl; displayArr( A ); }
First Array: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Second Array: 56, 84, 23, 12, 17, 19, 65, 32, Array A after pushing B: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 56, 84, 23, 12, 17, 19, 65, 32,
Dans cet article, nous avons vu différentes manières d'insérer ou de pousser un élément d'un tableau à la fin d'un autre tableau. Dans le premier exemple, nous utilisons un simple tableau C++ et nous devons accorder une attention particulière à l’espace disponible dans le tableau statique. Dans les deux méthodes suivantes, nous n'avons pas à nous en soucier car nous utilisons des vecteurs dynamiques qui alloueront automatiquement de l'espace en cas de besoin.
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!