Rumah > pembangunan bahagian belakang > C++ > Program C++ untuk menukar tatasusunan kepada set (set hash)

Program C++ untuk menukar tatasusunan kepada set (set hash)

PHPz
Lepaskan: 2023-09-16 09:01:02
ke hadapan
759 orang telah melayarinya

Program C++ untuk menukar tatasusunan kepada set (set hash)

Array ialah struktur data yang tersedia dalam C++ yang memegang koleksi berurutan unsur-unsur jenis yang sama. Saiz tatasusunan adalah tetap tetapi boleh dikembangkan atau dikurangkan mengikut keperluan. Adalah penting untuk memikirkan tatasusunan sebagai koleksi pembolehubah daripada jenis yang sama, walaupun ia digunakan untuk menyimpan koleksi data. Set (atau dalam kes ini, set tidak tertib) ialah bekas yang menyimpan elemen jenis data tertentu dalam susunan arbitrari. Jadual cincang digunakan untuk melaksanakan unordered_set, di mana kunci dicincang ke dalam indeks jadual cincang untuk membantu memastikan sisipan sentiasa rawak.

Penukaran daripada tatasusunan kepada set tidak tertib boleh dilakukan menggunakan pelbagai kaedah yang kita bincangkan dengan lebih lanjut.

Masukkan elemen tatasusunan ke dalam koleksi satu demi satu

Cara paling mudah untuk menukar tatasusunan kepada set tidak tertib ialah menggunakan gelung for dan memasukkan setiap elemen tatasusunan secara individu ke dalam set tidak tertib. Seterusnya kita melihat sintaks dan algoritma.

Tatabahasa

int ip[] = <integer array>;
   unordered_set<int> op;
   for( int i : ip) {
      op.insert(i);
}
Salin selepas log masuk

Algoritma

  • Dapatkan input dalam ip tatasusunan integer.
  • Tentukan operasi unordered_set.
  • Untuk setiap elemen i dalam ip tatasusunan, laksanakan -
    • Masukkan IP ke dalam op.
  • Tunjukkan kandungan op.

Contoh

#include <bits/stdc++.h>
using namespace std;

template <size_t N> unordered_set<int> solve( int (&ip)[N] )
{
   //an unorderd set is declared
   unordered_set<int> op;
   
   //each element is inserted using insert function
   for(int i : ip) {
      op.insert(i);
   }
   return op;
}
int main()
{
   int ip[] = {50, 80, 90, 40, 30};
   unordered_set<int> op = solve(ip);

   //display the input
   cout<< "The input array is: ";
   for(int i : ip) {
      cout<< i << " ";
   }

   //display the output
   cout<< "\nThe output set is: ";
   for(int j : op) {
      cout<< j << " ";
   }
   return 0;
}
Salin selepas log masuk

Output

The input array is: 50 80 90 40 30 
The output set is: 30 40 90 50 80
Salin selepas log masuk

Kami mengisytiharkan ip tatasusunan integer dan mengulangi semua elemen dalam tatasusunan. Kami mengisytiharkan set output sebagai op dan memasukkan setiap elemen ke dalam set tidak tertib menggunakan fungsi sisipan yang tersedia dalam bekas. Hasil yang boleh kita lihat ialah set nilai yang tidak tertib, yang juga terdapat dalam tatasusunan.

Bina koleksi menggunakan pembina julat

Set_tidak tersusun juga boleh dibuat menggunakan pembina julatnya. Pembina julat mengambil dua input; penunjuk permulaan tatasusunan input dan saiz tatasusunan input ditambah penunjuk permulaan.

Tatabahasa

int ip[] = ;
int n = sizeof(ip) / sizeof(ip[0]);
std::unordered_set op(ip, ip + n);
Salin selepas log masuk

Algoritma

  • Dapatkan input dalam ip tatasusunan integer.
  • Gunakan operator saiz untuk menentukan saiz tatasusunan input.
  • Tentukan saiz tatasusunan kepada pembolehubah integer n.
  • Bina operasi unordered_set menggunakan penunjuk mula tatasusunan dan saiz tatasusunan.
  • Tunjukkan kandungan op.

Contoh

#include <bits/stdc++.h>
using namespace std;

template <size_t N> unordered_set<int> solve(int (&ip)[N]) {
   //the size is determined of the input array
   int n = sizeof(ip) / sizeof(ip[0]);

   //output set is constructed using range constructor
   std::unordered_set<int> op(ip, ip + n);
   return op;
}

int main()
{
   int ip[] = {30, 20, 50, 10, 70};
   unordered_set<int> op = solve(ip);

   //display the input
   cout<< "The input array is: ";
   for(int i : ip) {
      cout<< i << " ";
   }  

   //display the output
   cout<< "\nThe output set is: ";
   for(int j : op) {
      cout<< j << " ";
   }
   return 0;
}
Salin selepas log masuk

Output

The input array is: 30 20 50 10 70 
The output set is: 70 10 50 20 30
Salin selepas log masuk

Dalam contoh ini, kita perlu menentukan saiz tatasusunan menggunakan fungsi saiz. kami Tetapkan saiz kepada pembolehubah n dan buat unordered_set menggunakan penunjuk ip dan ip + n beroperasi.

Kesimpulan

unordered_set boleh mengandungi sebarang jenis data. Untuk menukar jenis data yang dipegangnya, kita perlu menukar jenis data yang terkandung dalam . Bekas menyokong jenis primitif dan yang ditentukan pengguna dengan baik. Dalam amalan, unordered_set berfungsi dengan baik, secara amnya menyediakan operasi carian masa yang berterusan. Semua operasi pada unordered_set lazimnya mengambil masa tetap O(1), walaupun dalam kes paling teruk ia mungkin mengambil masa sehingga linear O(n), bergantung pada fungsi cincang dalaman.

Atas ialah kandungan terperinci Program C++ untuk menukar tatasusunan kepada set (set hash). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan