Maison > développement back-end > C++ > le corps du texte

Programme C++ pour pousser un tableau dans un autre tableau

WBOY
Libérer: 2023-09-04 13:37:06
avant
1293 Les gens l'ont consulté

Programme C++ pour pousser un tableau dans un autre tableau

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++.

Comprendre les concepts et illustrer avec des exemples

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]
Copier après la connexion

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++.

Algorithme

  • 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

Exemple

#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 );
}
Copier après la connexion

Sortie

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,
Copier après la connexion
Copier après la connexion
Copier après la connexion

Utilisation de tableaux ou de vecteurs dynamiques

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.

Algorithme

  • 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

Exemple

#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 );
}
Copier après la connexion

Sortie

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,
Copier après la connexion
Copier après la connexion
Copier après la connexion

Utilisez la fonction insert() dans le vecteur

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.

Exemple

#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 );
}
Copier après la connexion

Sortie

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,
Copier après la connexion
Copier après la connexion
Copier après la connexion

Conclusion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!