Eine lineare sequentielle Datenstruktur, die als Array bezeichnet wird, wird zum Speichern homogener Daten in einer Reihe von Speicherbereichen verwendet. Ein Array muss über bestimmte Funktionen verfügen, um Elemente effektiv einzufügen, zu löschen, zu durchlaufen und zu aktualisieren, genau wie andere Datenstrukturen . Unsere Arrays in C++ sind statisch. Darüber hinaus bietet C++ maximal Z-Elemente, die in einem statischen Array gespeichert werden können Wir werden sehen, wie man die Elemente eines Arrays in ein anderes Array in C++ verschiebt.
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]
Im obigen Beispiel ist es offensichtlich, dass wir zwei Arrays A und B haben. B in A zu schieben bedeutet, alle Elemente von B in Array A einzufügen. Diese Elemente werden am Ende von A hinzugefügt. Um dies zu erreichen, müssen wir jedoch eines prüfen: ob die verbleibenden Leerstellen in A (d. h. die maximale Größe von A minus der Anzahl der vorhandenen Elemente in A) gleich oder größer als die Anzahl der Elemente in B sind. Andernfalls können wir sie nicht nach A schieben. Werfen wir einen Blick auf den Algorithmus und den C++-Implementierungscode.
Nimm das Array A und B als Eingabe, die Anzahl der Elemente n in A als Eingabe, die Anzahl der Elemente m in B als Eingabe
Wenn A genug Platz hat, um das gesamte B unterzubringen, dann
für jedes Element e in B, tun
e an Array A anhängen
Den Zyklus beenden
Ende wenn
Array A und neue Größe n zurückgeben
#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,
Das Gleiche kann mit Vektoren erreicht werden. Vektoren sind dynamische Arrays, die in C++ STL vorhanden sind. Wenn wir die Verwendung von Vektoren in Betracht ziehen, müssen wir uns beim Einfügen von Elementen nicht um den verfügbaren Platz kümmern. Da der Vektor dynamisch ist, fügt er bei Bedarf automatisch neue Slots hinzu. Der Algorithmus ist derselbe wie bei der Prüfung der verfügbaren Steckplätze.
Nimm das Array A und B als Eingabe, die Anzahl der Elemente n in A als Eingabe, die Anzahl der Elemente m in B als Eingabe
für jedes Element e in B, tun
e an Array A anhängen
Den Zyklus beenden
Array A und neue Größe n zurückgeben
#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,
Die vorherige Methode war ein manueller Prozess. Wir können jedoch die Funktion insert() in Vektor-STL verwenden, um die gleiche Funktionalität zu erreichen. Die Funktion insert() akzeptiert einen Positionszeiger (unter Verwendung eines Iterators) und einen Iterator, kopiert ein Element aus einem Containerobjekt und fügt es aus dem Positionsindex in ein anderes Containerobjekt ein. Werfen wir einen Blick auf die C++-Implementierung, um einen klaren Überblick zu bekommen.
#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,
In diesem Artikel haben wir verschiedene Möglichkeiten gesehen, ein Array-Element an das Ende eines anderen Arrays einzufügen oder zu verschieben. Im ersten Beispiel verwenden wir ein einfaches C++-Array und müssen besonders auf den verfügbaren Platz im statischen Array achten. Bei den nächsten beiden Methoden müssen wir uns darüber keine Gedanken machen, da wir dynamische Vektoren verwenden, die bei Bedarf automatisch Speicherplatz zuweisen.
Das obige ist der detaillierte Inhalt vonC++-Programm zum Verschieben eines Arrays in ein anderes Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!