C++ Unordered_Map::Find() Funkcija

C Unordered Map Find Funkcija



C++ ir slavens ar savu jaudīgo un daudzpusīgo standarta veidņu bibliotēku (STL), kas izstrādātājiem nodrošina plašu lietošanai gatavu, ļoti efektīvu konteineru, iteratoru, algoritmu un funkciju komplektu. Starp tiem “unordered_map” izceļas kā galvenais spēlētājs efektīvas atslēgu vērtību glabāšanas un ātrdarbīgas piekļuves jomā, padarot to par lielisku izvēli lietojumprogrammām, kur ļoti svarīga ir ātra izguve. Šīs “unordered_map” pamatā funkcija unordered_map::find() ir ļoti svarīgs instruments. Šī datu struktūra ir optimizēta ātrgaitas piekļuvei un atslēgu vērtību glabāšanai. Šis raksts piedāvā visaptverošu funkcijas unordered_map::find() pārbaudi, atklājot tās sintaksi un parametrus ar ilustratīvu piemēru palīdzību.

Izpratne par Unordered_Map::Find()

Funkcija unordered_map::find() ir paredzēta, lai atrastu elementu, kas ir saistīts ar noteiktu atslēgu “unordered_map”. Tās deklarācija atšķiras atkarībā no tā, vai objekts ir nemainīgs vai nē, nodrošinot elastību tā lietošanā.

iteratora atrašana ( konst atslēgas_veids & k ) ;

To izmanto, ja “unordered_map” nav konstanti kvalificēts. Šis kods atgriež iteratoru, kas norāda uz atrasto elementu.







const_iterator atrast ( konst atslēgas_veids & k ) konst ;

Šī versija ir piemērojama, ja “unordered_map” ir nemainīga. Tas atgriež nemainīgu iteratoru ar līdzīgu darbību nekonstantajai versijai.



Parametri:



Tam nepieciešams viens parametrs “k”, kas ir atslēga, kas jāmeklē mapē “unordered_map”.





Atgriešanas vērtība:

Atgriešanas vērtība ir atkarīga no objekta “unordered_map” kvalifikācijas.

Metode atgriež nekonstantu iteratoru, ja objekts nav pastāvīgi kvalificēts.



Ja objekts ir konstanti kvalificēts, metode atgriež konstantu iteratoru.

Laika sarežģītība:

Std::unordered_map::find() laika sarežģītība ir ļoti svarīga, lai izprastu tā efektivitāti:

Vidējā gadījumā laika sarežģītība ir nemainīga (O (1)), padarot to ļoti efektīvu tipiskiem lietošanas gadījumiem.

Sliktākajā gadījumā laika sarežģītība kļūst lineāra (O(n)). Tomēr praksē šāds scenārijs ir reti sastopams.

1. piemērs:

Izpētīsim praktisku piemēru, lai ilustrētu unordered_map::find() izmantošanu un priekšrocības. Šajā piemērā tiek izveidota “unordered_map” ar rakstzīmēm kā taustiņiem un atbilstošiem veseliem skaitļiem kā vērtībām. Funkcija find () atrod elementu, kas ir saistīts ar atslēgu “p”. Iterators “ittr” ir saistīts ar atrasto elementu, un tā dati tiek izdrukāti konsolē. Skatiet šādu kodu:

#include

#include

izmantojot namespace std ;

starpt galvenais ( nederīgs ) {

unordered_map < char , starpt > unomp = {

{ 'iekšā' , 9 } ,

{ 'a' , 6 } ,

{ 'p' , 8 } ,

{ 'es' , 3 } ,

{ 's' , 4 } } ;

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

cout << 'Iterators' ' << ittr->vispirms << ' ' norāda uz = ' << ittr -> otrais << endl ;

atgriezties 0 ; }

Sadalīsim kodu, lai to skaidri un labāk izprastu:

#include

#include

Ir iekļauti nepieciešamie galvenes faili: ievades/izvades operācijām un konteinera “unordered_map” lietošanai.

izmantojot namespace std ;

Nosaukumvieta “std” vienkāršo kodu. Tas ļauj izmantot elementus no standarta C++ bibliotēkas, nepievienojot tiem prefiksu “std::”.

unordered_map < char , starpt > unomp = { { 'iekšā' , 9 } , { 'a' , 6 } , { 'p' , 8 } , { 'es' , 3 } , { 's' , 4 } } ;

Tiek izveidota “unordered_map” ar nosaukumu “um” ar rakstzīmēm ('w', 'a', 'p', 'm', 's') kā taustiņiem un atbilstošiem veseliem skaitļiem (9, 6, 8, 3, 4 ) kā vērtības.

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

Funkcija find() tiek izmantota, lai meklētu elementu ar taustiņu “p” laukā “unordered_map”, kas ir “unomp”. Iterators “ittr” norāda uz identificēto elementu.

cout << 'Iterators' ' << ittr->vispirms << ' ' norāda uz = ' << ittr -> otrais << endl ;

Saturs, uz kuru norāda iterators, tiek izdrukāts konsolē. Šajā gadījumā tas izdrukā atslēgu (“p”) un saistīto vērtību (8).

atgriezties 0 ;

Programma tiek pārtraukta, atgriežot 0, lai norādītu uz veiksmīgu izpildi.

Koda izvade jūsu uzziņai ir norādīta tālāk:

Šis kods ir vienkāršs piemērs unordered_map::find() izmantošanai, lai efektīvi meklētu un piekļūtu elementiem “unordered_map”. Iterators nodrošina ērtu veidu, kā piekļūt gan atslēgai, gan ar to saistītajai atrastā elementa vērtībai.

2. piemērs:

Šeit ir vēl viens vienkāršs funkcijas unordered_map::find() piemērs. Šis kods parāda “unordered_map” izmantošanu, lai saglabātu ar veselu skaitļu atslēgām saistītās Būla vērtības, un pēc tam izmanto funkciju find(), lai pārbaudītu konkrētu atslēgu esamību. Apskatīsim šo kodu un pēc tam sapratīsim, kā tas darbojas:

#include

izmantojot namespace std ;

starpt galvenais ( ) {

unordered_map < starpt , bool > unomp ;

unomp [ 2 ] = taisnība ;

unomp [ 67 ] = viltus ;

unomp [ Četri ] = taisnība ;

unomp [ 98 ] = viltus ;

ja ( unomp. atrast ( 67 ) == unomp. beigas ( ) )

cout << 'Elements nav atrasts' << endl ;

cits

cout << 'Elements atrasts' << endl ;

ja ( unomp. atrast ( 42 ) == unomp. beigas ( ) )

cout << 'Elements nav atrasts' << endl ;

cits

cout << 'Elements atrasts' << endl ;

atgriezties 0 ;

}

Šeit ir detalizēts koda apraksts:

#include

Šajā rindā ir ietverts galvenes fails, kas aptver visstandarta C++ bibliotēkas, kuras bieži izmanto konkurējošā programmēšanā. Tomēr regulārā C++ izstrādē ieteicams iekļaut konkrētas galvenes.

unordered_map < starpt , bool > unomp ;

“Unordered_map” ar nosaukumu “unomp” tiek izveidota ar veselu skaitļu taustiņiem un Būla vērtībām.

unomp [ 2 ] = taisnība ;

unomp [ 67 ] = viltus ;

unomp [ Četri ] = taisnība ;

unomp [ 98 ] = viltus ;

Atslēgu-vērtību pāri tiek ievietoti kartē “unordered_map”. Katra atslēga (vesels skaitlis) ir saistīta ar Būla vērtību.

ja ( unomp. atrast ( 67 ) == unomp. beigas ( ) )

cout << 'Elements nav atrasts' << endl ;

cits

cout << 'Elements atrasts' << endl ;

Funkcija find() tiek izmantota nosacījumā if-else, lai meklētu noteiktus taustiņus (67 un 42) sadaļā “unordered_map”. Ja atslēga tiek atrasta, tiek izdrukāts “Elements atrasts”. Pretējā gadījumā tiek izdrukāts ziņojums “Element not found”. Skatiet šādu izvadi:

Šis kods parāda “unordered_map” un Find() funkcijas pamata lietojumu, lai noteiktu konkrētu taustiņu esamību vai neesamību kartē.

3. piemērs:

Izpētīsim citu piemēru, kas parāda vērtības atrašanu, izpildes laikā nodrošinot ievadi. Šī vienkāršā programma izmanto “unordered_map”, lai saglabātu nosaukumus (kā atslēgas) un saistītās skaitliskās vērtības (šajā gadījumā apzīmē dažus atribūtus). Pēc tam lietotājam tiek piedāvāts ievadīt vārdu, meklēt šo vārdu kartē, izmantojot funkciju find(), un izdrukāt saistīto vērtību, ja nosaukums ir atrasts. Kods jūsu uzziņai ir norādīts tālāk:

#include

#include

#include

izmantojot namespace std ;

starpt galvenais ( ) {

std :: unordered_map < std :: stīga , dubultā > unomp = {

{ 'Herijs' , 23 } ,

{ 'Citi' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

string kurš ;

cout << 'Ko tu meklē? ' ;

getline ( ēšana , PVO ) ;

unordered_map < stīga , dubultā >:: const_iterator atrast = unomp. atrast ( PVO ) ;

ja ( atrast == unomp. beigas ( ) )

cout << 'nav atrasts' ;

cits

cout << endl << atrast -> vispirms << 'ir' << atrast -> otrais << endl ;

atgriezties 0 ;

}

Tālāk ir sniegts koda sadalījums jūsu izpratnei.

unordered_map < stīga , dubultā > unomp = { } ;

“Unordered_map” ar nosaukumu “unomp” tiek izveidota ar virknes taustiņiem (nosaukumiem) un dubultām vērtībām.

string kurš ;

Lietotājam ekrānā tiek piedāvāts ievadīt nosaukumu, un ievade tiek saglabāta virknes mainīgajā “who”.

unordered_map < stīga , dubultā >:: const_iterator atrast = unomp. atrast ( PVO ) ;

Funkciju find() izmanto, lai meklētu ievadīto vārdu “unordered_map”. Rezultāts tiek saglabāts iteratorā “fnd”.

ja ( atrast == unomp. beigas ( ) )

cout << 'nav atrasts' ;

cits

cout << endl << atrast -> vispirms << 'ir' << atrast -> otrais << endl ;

Ja “fnd” iterators sasniedz “unordered_map” (end()) beigas, tas nozīmē, ka nosaukums netika atrasts un tiek izdrukāts “nav atrasts”. Pretējā gadījumā tiek izdrukāts nosaukums un ar to saistītā vērtība. Šeit ir koda izvade:

Šis kods būtībā darbojas kā vienkāršs vārdu meklēšanas rīks, izmantojot “unordered_map”. Tas izmanto lietotāja ievadi, meklē vārdu kartē un nodrošina saistīto vērtību, ja nosaukums ir atrasts.

Secinājums

Funkcija unordered_map::find() programmā C++ nodrošina jaudīgu mehānismu, lai efektīvi atrastu elementus “unordered_map” konteineros. Tā nemainīgā vidējā laika sarežģītība padara to par vēlamo izvēli meklēšanas operācijām scenārijos, kad atslēgu un vērtību pāriem ir jāpiekļūst ātri. Sniegtie piemēri parāda tā praktisko pielietojumu, uzsverot tā vienkāršību un efektivitāti. Visbeidzot, funkcijas unordered_map::find() apgūšana uzlabo C++ programmētāja spēju pilnībā izmantot “unordered_map” konteineru potenciālu, veicinot optimizētu un augstas veiktspējas lietojumprogrammu izveidi.