Kelas dan Objek
Kelas adalah sekumpulan pemboleh ubah dan fungsi yang berfungsi bersama, di mana pemboleh ubah tidak mempunyai nilai yang ditetapkan. Apabila nilai diberikan kepada pemboleh ubah, kelas menjadi objek. Nilai yang berbeza yang diberikan kepada kelas yang sama menghasilkan objek yang berbeza; iaitu, objek yang berbeza adalah kelas yang sama dengan nilai yang berbeza. Membuat objek dari kelas dikatakan sebagai objek.
Nama, unordered_map, adalah kelas. Objek yang dibuat dari kelas unordered_map mempunyai nama yang dipilih pengaturcara.
Fungsi yang tergolong dalam kelas diperlukan untuk membuat objek dari kelas. Dalam C ++, fungsi itu mempunyai nama yang sama dengan nama kelas. Objek yang dibuat (disusun) dari kelas mempunyai nama yang berbeza yang diberikan kepada mereka, oleh pengaturcara.
Membuat objek dari kelas bermaksud membina objek; ia juga bermaksud memberi contoh.
Program C ++ yang menggunakan kelas unordered_map, bermula dengan baris berikut di bahagian atas fail:
#sertakan#sertakan
menggunakan ruang nama std;
Baris pertama adalah untuk input / output. Baris kedua adalah membenarkan program menggunakan semua ciri kelas unordered_map. Baris ketiga membolehkan program menggunakan nama di ruang nama standard.
Melebihi Fungsi
Apabila dua atau lebih tandatangan fungsi yang berbeza mempunyai nama yang sama, nama itu dikatakan berlebihan. Apabila satu fungsi dipanggil, jumlah dan jenis argumen, tentukan fungsi mana yang sebenarnya dijalankan.
Pembinaan / Salinan Pembinaan
Pembinaan Ringkas
Peta yang tidak tersusun dapat dibina dan diberi nilai seperti berikut:
peta_teraturanumap ["pisang"] = "kuning";
umap ["anggur"] = "hijau";
umap ["fig"] = "ungu";
Deklarasi dimulakan dengan pengkhususan templat dengan jenis untuk pasangan kunci dan nilai. Ini diikuti dengan nama pilihan pengaturcara untuk peta; kemudian titik koma. Segmen kod kedua menunjukkan cara menetapkan nilai pada kunci mereka.
Pembinaan oleh Initializer_list
Ini boleh dilakukan seperti berikut:
"anggur", "hijau", "gambar", "ungu");
Pembinaan dengan menetapkan Initializer_list
Contoh:
"anggur", "hijau", "gambar", "ungu";
Pembinaan dengan menyalin peta_ yang tidak tersusun
Contoh:
"anggur", "hijau", "gambar", "ungu");
peta_teraturan
Pasangan itu Unsur
Kod berikut menunjukkan cara membuat dan mengakses elemen pasangan:
berpasangancout << pr.first << '\n';
cout << pr.second << '\n';
Keluarannya adalah:
dlaut
pertama dan kedua adalah perkataan yang dikhaskan untuk dua item dalam pasangan. Nilai dalam pasangan masih boleh diubah menggunakan pertama dan kedua.
Sepasang dipanggil, value_type dalam topik peta yang tidak disusun.
Unsured_map Akses Elemen
pemetaan_jenis & operator [] (jenis_kunci && k)
Mengembalikan nilai untuk kekunci yang sepadan. Contoh:
umap ["pisang"] = "kuning";
umap ["anggur"] = "hijau";
umap ["fig"] = "ungu";
const char * ret = umap ["anggur"];
cout << ret <<'\n';
Keluarannya adalah: "hijau". Nilai boleh diberikan dengan cara yang sama - lihat di atas.
Kapasiti yang tidak teratur
size_type size () const kecuali
Mengembalikan bilangan pasangan dalam peta.
umap ["pisang"] = "kuning";
umap ["anggur"] = "hijau";
umap ["fig"] = "ungu";
cout << umap.size() <<'\n';
Keluaran adalah 3.
bool kosong () const kecuali
Mengembalikan 1 untuk true jika peta tidak mempunyai pasangan, dan 0 untuk false jika mempunyai pasangan. Contoh:
peta_teraturancout << umap.empty() <<'\n';
Keluaran adalah 1.
Kembali Iterator dan Kelas peta tanpa susunan
Iterator adalah seperti penunjuk tetapi mempunyai lebih banyak fungsi daripada penunjuk.
bermula () kecuali
Mengembalikan iterator yang menunjuk pada pasangan pertama objek peta, seperti pada segmen kod berikut:
peta_teraturanumap ["pisang"] = "kuning"; umap ["anggur"] = "hijau"; umap ["fig"] = "ungu";
peta_teraturan
berpasangan
cout << pr.first << ", " << pr.second << '\n';
Hasilnya ialah: ara, ungu. Peta tidak tersusun.
bermula () const kecuali;
Mengembalikan iterator yang menunjukkan elemen pertama dari koleksi objek peta. Ketika konstruksi objek didahului oleh const, ungkapan "begin () const" dijalankan dan bukannya "begin ()". Dalam keadaan ini, elemen dalam objek tidak dapat diubah. Contohnya digunakan dalam kod berikut.
const unordered_map"anggur", "hijau", "ara", "ungu");
peta_teraturan
berpasangan
cout << pr.first << ", " << pr.second << '\n';
Hasilnya ialah: ara, ungu. Peta tidak tersusun. Perhatikan bahawa const_iterator telah digunakan kali ini, bukan hanya iterator, untuk menerima iterator yang dikembalikan.
akhir () kecuali
Mengembalikan iterator yang menunjukkan tepat di luar elemen terakhir objek peta.
akhir () const kecuali
Mengembalikan iterator yang menunjukkan tepat di luar elemen terakhir objek peta. Apabila pembinaan objek peta didahului oleh const, ungkapan "end () const" dijalankan bukan "end ()".
unordered_map Operasi
cari iterator (const key_type & k)
Mencari sepasang kunci yang diberikan dalam peta. Sekiranya dijumpai, ia mengembalikan iterator. Sekiranya tidak dijumpai, ia mengembalikan iterator yang menunjuk ke hujung peta, yang bukan pasangan. Kod berikut menunjukkan cara menggunakan fungsi anggota ini:
peta_teraturanumap ['a'] = 'b'; umap ['c'] = 'd'; umap ['e'] = 'f';
peta_teraturan
sekiranya (umap.cari ('c') != umap.akhir ())
berpasangan
cout << pr.first << ", " << pr.second << '\n';
Keluarannya adalah: c, d
const_iterator find (const key_type & k) const;
Versi fungsi ini dipanggil, jika penciptaan peta yang tidak disusun bermula dengan const, menjadikan semua elemen peta hanya dapat dibaca.
pengubah tak teratur_map
berpasangan
Peta yang tidak tersusun bermaksud pasangan tidak mengikut urutan. Oleh itu, program memasukkan pasangan di mana-mana tempat yang difikirkan sesuai. Fungsi kembali, berpasangan
umap ["pisang"] = "kuning";
umap ["anggur"] = "hijau";
umap ["fig"] = "ungu";
umap.masukkan ("cherry", "red", "strawberry", "red");
cout << umap.size() << '\n';
Keluarannya adalah: 5. Lebih daripada satu pasangan boleh dimasukkan.
size_type delete (const key_type & k)
Fungsi ini menghapus sepasang dari peta yang tidak disusun. Segmen kod berikut menggambarkan:
peta_teraturanumap ["pisang"] = "kuning";
umap ["anggur"] = "hijau";
umap ["fig"] = "ungu";
int num = umap.padam ("anggur");
cout << umap.size() << '\n';
Keluaran adalah 2.
pertukaran kosong (tidak teratur_map &)
Dua peta yang tidak tersusun dapat ditukar, seperti yang digambarkan dalam segmen kod ini:
"anggur", "hijau", "ara", "ungu", "strawberi", "merah";
peta_teraturan
umap1.pertukaran (umap2);
peta_teraturan
berpasangan
peta_teraturan
berpasangan
cout << "First key and size of umap1: "<< pr1.first <<", "<< umap1.size() << '\n';
cout << "First key and size of umap2 "<< pr2.first <<", "<< umap2.size() << '\n';
peta_teraturan
"anggur", "hijau", "ara", "ungu", "strawberi", "merah";
peta_teraturan
umap1.pertukaran (umap2);
peta_teraturan
berpasangan
peta_teraturan
berpasangan
cout << "First key and size of umap1: "<< pr1.first <<", "<< umap1.size() << '\n';
cout << "First key and size of umap2 "<< pr2.first <<", "<< umap2.size() << '\n';
Keluarannya adalah:
Kunci pertama dan ukuran umap1: kapur, 2
Kunci dan saiz pertama strawberry umap2, 4
Peta tidak tersusun. Perhatikan bahawa panjang peta ditingkatkan jika perlu. Jenis data mestilah sama.
Kelas dan Objek Instantinya
Nilai adalah untuk jenis data, seperti objek instantiated ke kelas. Pembinaan peta yang tidak tersusun juga dapat menerima kelas sebagai jenis data. Program berikut menggambarkan ini:
#sertakan#sertakan
menggunakan ruang nama std;
kelas TheCla
awam:
int int;
char statik;
kekosongan kosong (char cha, const char * str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
keseronokan kekosongan statik (char ch)
jika (ch == 'a')
cout << "Official static member function" << '\n';
;
int utama ()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
peta_teraturan
umap = "pisang", obj1, "anggur", obj2, "fig", obj3, "strawberry", obj4, "limau", obj5;
cout << umap.size() << '\n';
pulangan 0;
Keluarannya adalah: 5.
Definisi kelas mempunyai dua data anggota awam dan dua fungsi anggota awam. Dalam fungsi utama (), objek yang berbeza untuk kelas dibuat. Peta yang tidak tersusun kemudian dibuat, di mana setiap pasangan terdiri daripada nama buah dan objek dari kelas. Ukuran peta dipaparkan. Program ini disusun tanpa peringatan atau mesej ralat.
Aplikasi Peta
Array mengaitkan indeks ke nilai. Pasangan kunci / nilai terdapat dalam banyak situasi dalam kehidupan, yang dapat diprogramkan. Pasangan kunci / nilai buah / warna hanyalah satu contoh. Contoh lain ialah nama orang dan usia mereka. Dalam kes ini, pasangan akan terdiri daripada jenis, pasangan
Pembentukan Peta
Peta bukan tatasusunan dua dimensi, dengan dua lajur. Peta berfungsi dengan fungsi hash. Kunci dikodkan oleh fungsi hash, menjadi integer array. Susunan inilah yang menyimpan nilai. Jadi, sebenarnya ada satu array dengan nilai, dan kunci dipetakan ke indeks array, dan persamaan antara kunci dan nilai dibuat. Hashing adalah topik yang luas dan tidak dibahas dalam artikel ini.
Kesimpulannya
Peta, juga dikenali sebagai susunan asosiatif adalah senarai elemen, di mana setiap elemen adalah pasangan kunci / nilai. Jadi, setiap kunci sepadan dengan nilai. Dalam C ++, peta diimplementasikan sebagai struktur data dengan fungsi dan operator anggota. Peta yang dipesan adalah peta di mana pasangan elemen telah dipesan oleh kunci. Peta yang tidak tersusun adalah peta yang tidak mempunyai pesanan.
Secara teknikal, hash terdiri daripada pasangan
Initializer_list untuk peta adalah susunan literal literal. Setiap literal dalaman terdiri daripada dua objek, pasangan kunci / nilai.
Fungsi anggota dan pengendali untuk unordered_map dapat dikategorikan di bawah tajuk berikut: unordered_map konstruksi / copy copy, unordered_map Capacity, unordered_map iterator, unordered_map Operations, and unordered_map Modifiers.
Peta tidak tersusun digunakan apabila kunci harus dipetakan ke nilai.
Chrys