Maison  >  Article  >  développement back-end  >  Programme C++ pour pousser un tableau dans un autre tableau

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

WBOY
WBOYavant
2023-09-04 13:37:061333parcourir

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]

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 );
}

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,

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 );
}

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,

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 );
}

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,

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer