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.
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.
int ip[] = <integer array>; unordered_set<int> op; for( int i : ip) { op.insert(i); }
#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; }
The input array is: 50 80 90 40 30 The output set is: 30 40 90 50 80
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.
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.
int ip[] = ; int n = sizeof(ip) / sizeof(ip[0]); std::unordered_set op(ip, ip + n);
#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; }
The input array is: 30 20 50 10 70 The output set is: 70 10 50 20 30
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.
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!