C++ Unordered_Map::Find() Function

C Unordered Map Find Function



C++ terkenal dengan perpustakaan templat standard (STL) yang berkuasa dan serba boleh, menyediakan pembangun dengan rangkaian luas bekas sedia untuk digunakan, sangat cekap, iterator, algoritma dan fungsi. Di antaranya, 'unordered_map' menonjol sebagai pemain utama dalam storan nilai kunci yang cekap dan akses berkelajuan tinggi, menjadikannya pilihan yang sangat baik untuk aplikasi yang pengambilan semula pantas adalah yang terpenting. Di tengah-tengah 'unordered_map' ini, fungsi unordered_map::find() ialah instrumen penting. Struktur data ini dioptimumkan untuk akses berkelajuan tinggi dan storan nilai kunci. Artikel ini menawarkan pemeriksaan menyeluruh bagi fungsi unordered_map::find() dengan mendedahkan sintaks dan parameternya dengan bantuan contoh ilustrasi.

Memahami Unordered_Map::Find()

Fungsi unordered_map::find() direka untuk mencari elemen yang dikaitkan dengan kunci yang ditentukan dalam 'unordered_map'. Pengisytiharannya berbeza-beza berdasarkan sama ada objek itu layak malar atau tidak, memberikan fleksibiliti dalam penggunaannya.

mencari iterator ( const jenis_kunci & k ) ;

Ini digunakan apabila 'unordered_map' tidak mempunyai kelayakan tetap. Kod ini mengembalikan iterator yang menunjuk kepada elemen yang ditemui.







const_iterator find ( const jenis_kunci & k ) const ;

Versi ini terpakai apabila 'unordered_map' adalah malar yang layak. Ia mengembalikan iterator malar dengan tingkah laku yang serupa dengan versi bukan malar.



Parameter:



Ia memerlukan satu parameter, 'k', yang merupakan kunci untuk dicari dalam 'unordered_map'.





Nilai Pulangan:

Nilai pulangan bergantung pada kelayakan objek 'unordered_map'.

Kaedah ini mengembalikan lelaran bukan malar jika objek tidak sentiasa layak.



Jika objek adalah pemalar yang layak, kaedah itu mengembalikan lelaran malar.

Kerumitan Masa:

Kerumitan masa std::unordered_map::find() adalah penting untuk memahami kecekapannya:

Dalam kes purata, kerumitan masa adalah malar (O(1)), menjadikannya sangat cekap untuk kes penggunaan biasa.

Dalam senario terburuk, kerumitan masa menjadi linear (O(n)). Walau bagaimanapun, senario ini jarang berlaku dalam amalan.

Contoh 1:

Mari kita terokai contoh praktikal untuk menggambarkan penggunaan dan faedah unordered_map::find(). Dalam contoh ini, 'unordered_map' dicipta dengan aksara sebagai kunci dan integer yang sepadan sebagai nilai. Fungsi find() mencari elemen yang dipautkan dengan kekunci 'p'. Peulang 'ittr' dipautkan kepada elemen yang ditemui dan datanya dicetak ke konsol. Lihat kod berikut:

#include

#include

menggunakan ruang nama std ;

int utama ( batal ) {

peta_tak tersusun < char , int > unomp = {

{ 'Dalam' , 9 } ,

{ 'a' , 6 } ,

{ 'p' , 8 } ,

{ 'saya' , 3 } ,

{ 's' , 4 } } ;

auto ittr = unomp. cari ( 'p' ) ;

cout << 'Pelajar' '<< ittr->pertama << ' ' menunjuk kepada = ' << ittr -> kedua << endl ;

kembali 0 ; }

Mari kita pecahkan kod tersebut untuk memahaminya dengan jelas dan lebih baik:

#include

#include

Fail pengepala yang diperlukan disertakan: untuk operasi input/output dan untuk menggunakan bekas 'unordered_map'.

menggunakan ruang nama std ;

Ruang nama 'std' memudahkan kod. Ia membolehkan anda menggunakan unsur-unsur daripada perpustakaan C++ standard tanpa meletakkannya awalan dengan 'std::'.

peta_tak tersusun < char , int > unomp = { { 'Dalam' , 9 } , { 'a' , 6 } , { 'p' , 8 } , { 'saya' , 3 } , { 's' , 4 } } ;

“Peta_tak tersusun” bernama “um” dicipta dengan aksara ('w', 'a', 'p', 'm', 's') sebagai kunci dan integer yang sepadan (9, 6, 8, 3, 4 ) sebagai nilai.

auto ittr = unomp. cari ( 'p' ) ;

Fungsi find() digunakan untuk mencari elemen dengan kekunci 'p' dalam 'unordered_map' iaitu 'unomp'. Peulang 'ittr' menunjuk kepada elemen yang dikenal pasti.

cout << 'Pelajar' '<< ittr->pertama << ' ' menunjuk kepada = ' << ittr -> kedua << endl ;

Kandungan yang ditunjuk oleh iterator dicetak ke konsol. Ia mencetak kunci (“p”) dan nilai yang berkaitan (8) dalam kes ini.

kembali 0 ;

Program ini ditamatkan, mengembalikan 0 untuk menunjukkan pelaksanaan yang berjaya.

Output kod diberikan dalam perkara berikut untuk rujukan anda:

Kod ini ialah contoh mudah untuk menggunakan unordered_map::find() untuk mencari dan mengakses elemen dalam 'unordered_map' dengan cekap. Iterator menyediakan cara yang mudah untuk mengakses kedua-dua kunci dan nilai yang berkaitan bagi elemen yang ditemui.

Contoh 2:

Berikut ialah satu lagi contoh mudah bagi fungsi unordered_map::find(). Kod ini menunjukkan penggunaan 'unordered_map' untuk menyimpan nilai Boolean yang dikaitkan dengan kekunci integer dan kemudian menggunakan fungsi find() untuk menyemak kewujudan kunci tertentu. Mari kita lihat kod berikut dan kemudian fahami cara ia berfungsi:

#include

menggunakan ruang nama std ;

int utama ( ) {

peta_tak tersusun < int , bool > unomp ;

unomp [ 2 ] = benar ;

unomp [ 67 ] = salah ;

unomp [ Empat lima ] = benar ;

unomp [ 98 ] = salah ;

jika ( unomp. cari ( 67 ) == unomp. tamat ( ) )

cout << 'Unsur tidak ditemui' << endl ;

lain

cout << 'Unsur ditemui' << endl ;

jika ( unomp. cari ( 42 ) == unomp. tamat ( ) )

cout << 'Unsur tidak ditemui' << endl ;

lain

cout << 'Unsur ditemui' << endl ;

kembali 0 ;

}

Berikut ialah penerangan terperinci tentang kod tersebut:

#include

Baris ini termasuk fail pengepala yang merangkumi perpustakaan C++ paling standard yang sering digunakan dalam pengaturcaraan kompetitif. Walau bagaimanapun, dalam pembangunan C++ biasa, adalah disyorkan untuk memasukkan pengepala khusus.

peta_tak tersusun < int , bool > unomp ;

'unordered_map' bernama 'unomp' dibuat dengan kunci integer dan nilai Boolean.

unomp [ 2 ] = benar ;

unomp [ 67 ] = salah ;

unomp [ Empat lima ] = benar ;

unomp [ 98 ] = salah ;

Pasangan nilai kunci dimasukkan ke dalam 'peta_tidak tersusun'. Setiap kunci (integer) dikaitkan dengan nilai Boolean.

jika ( unomp. cari ( 67 ) == unomp. tamat ( ) )

cout << 'Unsur tidak ditemui' << endl ;

lain

cout << 'Unsur ditemui' << endl ;

Fungsi find() digunakan dalam keadaan if-else untuk mencari kunci tertentu (67 dan 42) dalam 'unordered_map'. Jika kunci ditemui, 'Elemen ditemui' dicetak. Jika tidak, 'Elemen tidak ditemui' dicetak. Lihat output berikut:

Kod ini mempamerkan penggunaan asas 'unordered_map' dan fungsi find() untuk menentukan kehadiran atau ketiadaan kunci tertentu dalam peta.

Contoh 3:

Mari kita terokai contoh lain yang menunjukkan penemuan nilai dengan menyediakan input pada masa jalankan. Program ringkas ini menggunakan 'unordered_map' untuk menyimpan nama (sebagai kunci) dan nilai berangka yang berkaitan (dalam kes ini, mewakili beberapa atribut). Ia kemudian menggesa pengguna untuk memasukkan nama, mencari nama itu dalam peta menggunakan fungsi find(), dan mencetak nilai yang berkaitan jika nama itu ditemui. Kod diberikan dalam perkara berikut untuk rujukan anda:

#include

#include

#include

menggunakan ruang nama std ;

int utama ( ) {

std :: peta_tak tersusun < std :: tali , berganda > unomp = {

{ 'Herry' , 23 } ,

{ 'Lain-lain' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

rentetan siapa ;

cout << 'Awak cari siapa?' ;

getline ( makan , WHO ) ;

peta_tak tersusun < tali , berganda >:: const_iterator fnd = unomp. cari ( WHO ) ;

jika ( fnd == unomp. tamat ( ) )

cout << 'tidak ditemui' ;

lain

cout << endl << fnd -> pertama << 'adalah' << fnd -> kedua << endl ;

kembali 0 ;

}

Berikut ialah pecahan kod untuk pemahaman anda:

peta_tak tersusun < tali , berganda > unomp = { } ;

'unordered_map' bernama 'unomp' dicipta dengan kunci rentetan (nama) dan nilai berganda.

rentetan siapa ;

Pengguna digesa untuk memasukkan nama pada skrin dan input disimpan dalam pembolehubah rentetan 'siapa'.

peta_tak tersusun < tali , berganda >:: const_iterator fnd = unomp. cari ( WHO ) ;

Fungsi find() digunakan untuk mencari nama yang dimasukkan dalam 'unordered_map'. Hasilnya disimpan dalam iterator 'fnd'.

jika ( fnd == unomp. tamat ( ) )

cout << 'tidak ditemui' ;

lain

cout << endl << fnd -> pertama << 'adalah' << fnd -> kedua << endl ;

Jika lelaran 'fnd' mencapai penghujung 'unordered_map' (end()), ini bermakna nama itu tidak ditemui dan 'not found' dicetak. Jika tidak, nama dan nilai yang berkaitan akan dicetak. Berikut ialah output kod:

Kod ini pada asasnya bertindak sebagai alat carian nama mudah menggunakan 'unordered_map'. Ia mengambil input pengguna, mencari nama dalam peta dan memberikan nilai yang berkaitan jika nama itu ditemui.

Kesimpulan

Fungsi unordered_map::find() dalam C++ menyediakan mekanisme yang berkuasa untuk mengesan elemen dengan cekap dalam bekas 'unordered_map'. Kerumitan masa purata yang berterusan menjadikannya pilihan pilihan untuk operasi carian dalam senario di mana pasangan nilai kunci mesti diakses dengan pantas. Contoh yang disediakan mempamerkan penggunaan praktikalnya, menekankan kesederhanaan dan keberkesanannya. Kesimpulannya, menguasai fungsi unordered_map::find() meningkatkan keupayaan pengaturcara C++ untuk memanfaatkan potensi penuh bekas 'unordered_map', menyumbang kepada penciptaan aplikasi yang dioptimumkan dan berprestasi tinggi.