Rumah >pembangunan bahagian belakang >C++ >Program C++ untuk menolak tatasusunan ke tatasusunan lain

Program C++ untuk menolak tatasusunan ke tatasusunan lain

WBOY
WBOYke hadapan
2023-09-04 13:37:061385semak imbas

Program C++ untuk menolak tatasusunan ke tatasusunan lain

Struktur data jujukan linear yang dipanggil tatasusunan digunakan untuk menyimpan data homogen dalam satu siri kawasan memori Sesuatu tatasusunan perlu mempunyai ciri tertentu untuk memasukkan, memadam, melintasi dan mengemas kini elemen dengan berkesan, sama seperti struktur data lain. . Tatasusunan kami dalam C++ adalah statik Selain itu, C++ menawarkan beberapa struktur tatasusunan dinamik yang boleh disimpan di dalam tatasusunan statik akan melihat cara untuk menolak elemen satu tatasusunan di dalam tatasusunan lain dalam C++.

Fahami konsep dan gambarkan dengan contoh

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]

Dalam contoh di atas, jelas bahawa kita mempunyai dua tatasusunan A dan B. Menolak B ke dalam A bermakna memasukkan semua elemen dari B ke dalam tatasusunan A. Unsur-unsur ini akan ditambah pada penghujung A. Tetapi untuk mencapai ini, kita perlu menyemak satu perkara, iaitu, sama ada baki kekosongan dalam A (iaitu saiz maksimum A tolak bilangan elemen sedia ada dalam A) adalah sama atau lebih besar daripada bilangan elemen dalam B. Jika tidak, kita tidak boleh menolak mereka ke A. Mari kita lihat algoritma dan kod pelaksanaan C++.

Algoritma

  • ambil tatasusunan A dan B sebagai input, bilangan elemen n dalam A sebagai input, bilangan elemen m dalam B sebagai input

  • Jika A mempunyai ruang yang cukup untuk menampung keseluruhan B, maka

  • untuk setiap elemen e dalam B, lakukan

  • tambahkan e pada tatasusunan A

  • Tamatkan kitaran

  • tamat jika

  • kembalikan array A dan saiz baru n

Contoh

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

Output

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,

Menggunakan Tatasusunan Dinamik atau Vektor

Perkara yang sama boleh dilakukan menggunakan vektor. Vektor ialah tatasusunan dinamik yang terdapat dalam C++ STL. Jika kita mempertimbangkan untuk menggunakan vektor, kita tidak perlu mengambil berat tentang ruang yang ada semasa memasukkan elemen. Oleh kerana vektor adalah dinamik, ia secara automatik menambah slot baharu apabila diperlukan. Algoritma adalah sama dengan semakan slot yang tersedia.

Algoritma

  • ambil tatasusunan A dan B sebagai input, bilangan elemen n dalam A sebagai input, bilangan elemen m dalam B sebagai input

  • untuk setiap elemen e dalam B, lakukan

    • tambahkan e pada tatasusunan A

  • Tamatkan kitaran

  • kembalikan array A dan saiz baru n

Contoh

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

Output

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,

Gunakan fungsi insert() dalam vektor

Kaedah sebelum ini adalah proses manual. Walau bagaimanapun, kita boleh menggunakan fungsi insert() dalam vektor STL untuk mencapai fungsi yang sama. Fungsi insert() menerima penunjuk kedudukan (menggunakan iterator) dan iterator, menyalin elemen daripada satu objek bekas dan memasukkannya daripada indeks kedudukan ke objek bekas yang lain. Mari kita lihat pelaksanaan C++ untuk mendapatkan pandangan yang jelas.

Contoh

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

Output

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,

Kesimpulan

Dalam artikel ini kami melihat beberapa cara berbeza untuk memasukkan atau menolak elemen tatasusunan ke penghujung tatasusunan lain. Dalam contoh pertama, kami menggunakan tatasusunan C++ yang mudah, dan kami perlu memberi perhatian khusus kepada ruang yang tersedia dalam tatasusunan statik. Dalam dua kaedah seterusnya, kami tidak perlu risau tentang perkara ini kerana kami menggunakan vektor dinamik yang akan memperuntukkan ruang secara automatik apabila diperlukan.

Atas ialah kandungan terperinci Program C++ untuk menolak tatasusunan ke tatasusunan lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam