Fungsi C++ Unordered_Map::Find()

Fungsi C Unordered Map Find



C++ terkenal dengan pustaka templat standar (STL) yang kuat dan serbaguna, menyediakan kepada pengembang rangkaian luas container, iterator, algoritme, dan fungsi yang siap digunakan dan sangat efisien. Diantaranya, “unordered_map” menonjol sebagai pemain kunci dalam penyimpanan nilai kunci yang efisien dan akses berkecepatan tinggi, menjadikannya pilihan yang sangat baik untuk aplikasi yang mengutamakan pengambilan cepat. Inti dari “unordered_map” ini, fungsi unordered_map::find() adalah instrumen yang penting. Struktur data ini dioptimalkan untuk akses berkecepatan tinggi dan penyimpanan nilai kunci. Artikel ini menawarkan pemeriksaan komprehensif terhadap fungsi unordered_map::find() dengan mengungkap sintaksis dan parameternya dengan bantuan contoh ilustratif.

Memahami Unordered_Map::Find()

Fungsi unordered_map::find() dirancang untuk menemukan elemen yang dikaitkan dengan kunci tertentu dalam “unordered_map”. Deklarasinya bervariasi berdasarkan apakah objek tersebut memenuhi syarat konstan atau tidak, sehingga memberikan fleksibilitas dalam penggunaannya.

penemuan iterator ( konstanta tipe_kunci & k ) ;

Ini digunakan ketika “unordered_map” tidak memenuhi syarat konstan. Kode ini mengembalikan iterator yang menunjuk ke elemen yang ditemukan.







const_iterator temukan ( konstanta tipe_kunci & k ) konstanta ;

Versi ini berlaku ketika “unordered_map” memenuhi syarat konstan. Ia mengembalikan iterator konstan dengan perilaku yang mirip dengan versi non-konstan.



Parameter:



Dibutuhkan satu parameter, “k”, yang merupakan kunci untuk dicari dalam “unordered_map”.





Nilai Pengembalian:

Nilai yang dikembalikan bergantung pada kualifikasi objek “unordered_map”.

Metode ini mengembalikan iterator non-konstan jika objek tidak selalu memenuhi syarat.



Jika objek berkualifikasi konstan, metode akan mengembalikan iterator konstan.

Kompleksitas Waktu:

Kompleksitas waktu std::unordered_map::find() sangat penting untuk memahami efisiensinya:

Dalam kasus rata-rata, kompleksitas waktu adalah konstan (O(1)), sehingga sangat efisien untuk kasus penggunaan biasa.

Dalam skenario terburuk, kompleksitas waktu menjadi linier (O(n)). Namun, skenario ini jarang terjadi dalam praktiknya.

Contoh 1:

Mari kita jelajahi contoh praktis untuk mengilustrasikan penggunaan dan manfaat unordered_map::find(). Dalam contoh ini, “unordered_map” dibuat dengan karakter sebagai kunci dan bilangan bulat yang sesuai sebagai nilai. Fungsi find() menemukan elemen yang dihubungkan dengan kunci “p”. Iterator “ittr” ditautkan ke elemen yang ditemukan dan datanya dicetak ke konsol. Lihat kode berikut:

#termasuk

#termasuk

menggunakan namespace std ;

ke dalam utama ( ruang kosong ) {

peta_tidak berurutan < arang , ke dalam > batalkan = {

{ 'Di dalam' , 9 } ,

{ 'A' , 6 } ,

{ 'P' , 8 } ,

{ 'M' , 3 } ,

{ 'S' , 4 } } ;

mobil ittr = batalkan. menemukan ( 'P' ) ;

cout << 'Iterator' ' << ittr->pertama << ' ' menunjuk ke = ' << ittr -> Kedua << akhir ;

kembali 0 ; }

Mari kita uraikan kodenya untuk mendapatkan pemahaman yang lebih jelas dan lebih baik:

#termasuk

#termasuk

File header yang diperlukan disertakan: untuk operasi input/output dan untuk menggunakan container “unordered_map”.

menggunakan namespace std ;

Namespace “std” menyederhanakan kode. Ini memungkinkan Anda menggunakan elemen dari pustaka C++ standar tanpa mengawalinya dengan “std::”.

peta_tidak berurutan < arang , ke dalam > batalkan = { { 'Di dalam' , 9 } , { 'A' , 6 } , { 'P' , 8 } , { 'M' , 3 } , { 'S' , 4 } } ;

Sebuah “unordered_map” bernama “um” dibuat dengan karakter ('w', 'a', 'p', 'm', 's') sebagai kunci dan bilangan bulat yang sesuai (9, 6, 8, 3, 4 ) sebagai nilai.

mobil ittr = batalkan. menemukan ( 'P' ) ;

Fungsi find() digunakan untuk mencari elemen dengan kunci “p” pada “unordered_map” yaitu “unomp”. Iterator “ittr” menunjuk ke elemen yang diidentifikasi.

cout << 'Iterator' ' << ittr->pertama << ' ' menunjuk ke = ' << ittr -> Kedua << akhir ;

Konten yang ditunjuk oleh iterator dicetak ke konsol. Ini mencetak kunci (“p”) dan nilai terkait (8) dalam kasus ini.

kembali 0 ;

Program berakhir, mengembalikan 0 untuk menunjukkan eksekusi berhasil.

Output kode diberikan sebagai berikut untuk referensi Anda:

Kode ini adalah contoh sederhana penggunaan unordered_map::find() untuk mencari dan mengakses elemen dalam “unordered_map” secara efisien. Iterator menyediakan cara mudah untuk mengakses kunci dan nilai terkait dari elemen yang ditemukan.

Contoh 2:

Berikut adalah contoh sederhana lainnya dari fungsi unordered_map::find(). Kode ini mendemonstrasikan penggunaan “unordered_map” untuk menyimpan nilai Boolean yang terkait dengan kunci integer dan kemudian menggunakan fungsi find() untuk memeriksa keberadaan kunci tertentu. Mari kita lihat kode berikut dan kemudian pahami cara kerjanya:

#termasuk

menggunakan namespace std ;

ke dalam utama ( ) {

peta_tidak berurutan < ke dalam , bodoh > batalkan ;

batalkan [ 2 ] = BENAR ;

batalkan [ 67 ] = PALSU ;

batalkan [ Empat. Lima ] = BENAR ;

batalkan [ 98 ] = PALSU ;

jika ( batalkan. menemukan ( 67 ) == batalkan. akhir ( ) )

cout << 'Elemen tidak ditemukan' << akhir ;

kalau tidak

cout << 'Elemen ditemukan' << akhir ;

jika ( batalkan. menemukan ( 42 ) == batalkan. akhir ( ) )

cout << 'Elemen tidak ditemukan' << akhir ;

kalau tidak

cout << 'Elemen ditemukan' << akhir ;

kembali 0 ;

}

Berikut penjelasan detail kodenya:

#termasuk

Baris ini menyertakan file header yang mencakup sebagian besar pustaka C++ standar yang sering digunakan dalam pemrograman kompetitif. Namun, dalam pengembangan C++ reguler, disarankan untuk menyertakan header tertentu.

peta_tidak berurutan < ke dalam , bodoh > batalkan ;

Sebuah “unordered_map” bernama “unomp” dibuat dengan kunci integer dan nilai Boolean.

batalkan [ 2 ] = BENAR ;

batalkan [ 67 ] = PALSU ;

batalkan [ Empat. Lima ] = BENAR ;

batalkan [ 98 ] = PALSU ;

Pasangan kunci-nilai dimasukkan ke dalam “unordered_map”. Setiap kunci (integer) dikaitkan dengan nilai Boolean.

jika ( batalkan. menemukan ( 67 ) == batalkan. akhir ( ) )

cout << 'Elemen tidak ditemukan' << akhir ;

kalau tidak

cout << 'Elemen ditemukan' << akhir ;

Fungsi find() digunakan dalam kondisi if-else untuk mencari kunci tertentu (67 dan 42) dalam “unordered_map”. Jika kunci ditemukan, “Elemen ditemukan” dicetak. Jika tidak, “Elemen tidak ditemukan” akan dicetak. Lihat keluaran berikut:

Kode ini menampilkan penggunaan dasar “unordered_map” dan fungsi find() untuk menentukan ada atau tidaknya kunci tertentu di peta.

Contoh 3:

Mari kita jelajahi contoh lain yang mendemonstrasikan penemuan nilai dengan memberikan masukan pada waktu proses. Program sederhana ini menggunakan “unordered_map” untuk menyimpan nama (sebagai kunci) dan nilai numerik terkait (dalam hal ini, mewakili beberapa atribut). Kemudian meminta pengguna untuk memasukkan nama, mencari nama tersebut di peta menggunakan fungsi find(), dan mencetak nilai terkait jika nama tersebut ditemukan. Kode diberikan berikut ini untuk referensi Anda:

#termasuk

#termasuk

#termasuk

menggunakan namespace std ;

ke dalam utama ( ) {

std :: peta_tidak berurutan < std :: rangkaian , dobel > batalkan = {

{ 'Herry' , 23 } ,

{ 'Yang lain' , 7.4 } ,

{ 'Kjuga' , 1.2 } } ;

tali siapa ;

cout << 'Siapa yang kamu cari? ' ;

getline ( makan , WHO ) ;

peta_tidak berurutan < rangkaian , dobel >:: const_iterator menemukan = batalkan. menemukan ( WHO ) ;

jika ( menemukan == batalkan. akhir ( ) )

cout << 'tidak ditemukan' ;

kalau tidak

cout << akhir << menemukan -> Pertama << ' adalah ' << menemukan -> Kedua << akhir ;

kembali 0 ;

}

Berikut rincian kodenya untuk pemahaman Anda:

peta_tidak berurutan < rangkaian , dobel > batalkan = { } ;

Sebuah “unordered_map” bernama “unomp” dibuat dengan kunci string (nama) dan nilai ganda.

tali siapa ;

Pengguna diminta untuk memasukkan nama di layar dan masukannya disimpan dalam variabel string “siapa”.

peta_tidak berurutan < rangkaian , dobel >:: const_iterator menemukan = batalkan. menemukan ( WHO ) ;

Fungsi find() digunakan untuk mencari nama yang dimasukkan di “unordered_map”. Hasilnya disimpan di iterator “fnd”.

jika ( menemukan == batalkan. akhir ( ) )

cout << 'tidak ditemukan' ;

kalau tidak

cout << akhir << menemukan -> Pertama << ' adalah ' << menemukan -> Kedua << akhir ;

Jika iterator “fnd” mencapai akhir “unordered_map” (end()), berarti nama tidak ditemukan dan “not found” dicetak. Jika tidak, nama dan nilai terkaitnya akan dicetak. Berikut ini keluaran kodenya:

Kode ini pada dasarnya bertindak sebagai alat pencarian nama sederhana menggunakan “unordered_map”. Dibutuhkan input pengguna, mencari nama di peta, dan memberikan nilai terkait jika nama tersebut ditemukan.

Kesimpulan

Fungsi unordered_map::find() di C++ menyediakan mekanisme yang kuat untuk menemukan elemen dalam container “unordered_map” secara efisien. Kompleksitas waktu rata-ratanya yang konstan menjadikannya pilihan yang lebih disukai untuk operasi pencarian dalam skenario di mana pasangan nilai kunci harus diakses dengan cepat. Contoh yang diberikan menunjukkan penggunaan praktisnya, menekankan kesederhanaan dan efektivitasnya. Kesimpulannya, menguasai fungsi unordered_map::find() akan meningkatkan kemampuan pemrogram C++ untuk memanfaatkan potensi penuh dari container “unordered_map”, sehingga berkontribusi pada penciptaan aplikasi yang dioptimalkan dan berkinerja tinggi.