C++ Unordered_Map::Find() funksjon

C Unordered Map Find Funksjon



C++ er kjent for sitt kraftige og allsidige standardmalbibliotek (STL), som gir utviklerne en omfattende pakke med klare til bruk, svært effektive beholdere, iteratorer, algoritmer og funksjoner. Blant disse skiller «unordered_map» seg ut som en nøkkelspiller innen effektiv lagring av nøkkelverdier og høyhastighetstilgang, noe som gjør det til et utmerket valg for applikasjoner der rask gjenfinning er avgjørende. I hjertet av dette 'unordered_map' er unordered_map::find()-funksjonen et viktig instrument. Denne datastrukturen er optimalisert for høyhastighetstilgang og nøkkelverdilagring. Denne artikkelen tilbyr en omfattende undersøkelse av unordered_map::find()-funksjonen ved å avsløre dens syntaks og parametere ved hjelp av illustrerende eksempler.

Forstå Unordered_Map::Find()

Funksjonen unordered_map::find() er designet for å finne et element som er assosiert med en spesifisert nøkkel i et 'unordered_map'. Dens erklæring varierer basert på om objektet er konstant-kvalifisert eller ikke, noe som gir fleksibilitet i bruken.

iterator finne ( konst nøkkeltype & k ) ;

Dette brukes når 'unordered_map' ikke er konstant-kvalifisert. Denne koden returnerer en iterator som peker til elementet som ble funnet.







const_iterator finn ( konst nøkkeltype & k ) konst ;

Denne versjonen gjelder når 'unordered_map' er konstant-kvalifisert. Den returnerer en konstant iterator med en lignende oppførsel som den ikke-konstante versjonen.



Parametere:



Det krever en enkelt parameter, 'k', som er nøkkelen som skal søkes i 'unordered_map'.





Returverdi:

Returverdien avhenger av kvalifikasjonen til 'unordered_map'-objektet.

Metoden returnerer en ikke-konstant iterator hvis objektet ikke er konstant kvalifisert.



Hvis objektet er konstantkvalifisert, returnerer metoden en konstant iterator.

Tidskompleksitet:

Tidskompleksiteten til std::unordered_map::find() er avgjørende for å forstå effektiviteten:

I gjennomsnittstilfellet er tidskompleksiteten konstant (O(1)), noe som gjør den svært effektiv for typiske brukstilfeller.

I verste fall blir tidskompleksiteten lineær (O(n)). Dette scenariet er imidlertid sjeldent i praksis.

Eksempel 1:

La oss utforske et praktisk eksempel for å illustrere bruken og fordelene med unordered_map::find(). I dette eksemplet opprettes et 'uordnet_kart' med tegnene som nøkler og de tilsvarende heltallene som verdier. Finn()-funksjonen finner elementet som er knyttet til nøkkelen til 'p'. Iteratoren 'ittr' er koblet til elementet som ble funnet, og dataene skrives ut til konsollen. Se følgende kode:

#include

#include

bruker navneområde std ;

int hoved- ( tomrom ) {

uordnet_kart < røye , int > unomp = {

{ 'I' , 9 } ,

{ 'en' , 6 } ,

{ 'p' , 8 } ,

{ 'm' , 3 } ,

{ 's' , 4 } } ;

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

cout << 'Iterator' ' << ittr->først << ' ' peker på = ' << ittr -> sekund << endl ;

komme tilbake 0 ; }

La oss dele opp koden for å få en klar og bedre forståelse av den:

#include

#include

De nødvendige overskriftsfilene er inkludert: for input/output-operasjoner og for bruk av 'unordered_map'-beholderen.

bruker navneområde std ;

'std'-navneområdet forenkler koden. Den lar deg bruke elementene fra standard C++-biblioteket uten å prefiksere dem med 'std::'.

uordnet_kart < røye , int > unomp = { { 'I' , 9 } , { 'en' , 6 } , { 'p' , 8 } , { 'm' , 3 } , { 's' , 4 } } ;

Et 'unordered_map' kalt 'um' lages med tegnene ('w', 'a', 'p', 'm', 's') som nøkler og de tilsvarende heltallene (9, 6, 8, 3, 4 ) som verdier.

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

Finn()-funksjonen brukes til å søke etter elementet med nøkkelen til 'p' i 'unordered_map' som er 'unomp'. Iteratoren 'ittr' peker på det identifiserte elementet.

cout << 'Iterator' ' << ittr->først << ' ' peker på = ' << ittr -> sekund << endl ;

Innholdet som er pekt på av iteratoren skrives ut til konsollen. Den skriver ut nøkkelen (“p”) og den tilhørende verdien (8) i dette tilfellet.

komme tilbake 0 ;

Programmet avsluttes, og returnerer 0 for å indikere vellykket utførelse.

Utdataene til koden er gitt i følgende for din referanse:

Denne koden er et enkelt eksempel på bruk av unordered_map::find() for å effektivt søke etter og få tilgang til elementene i et 'unordered_map'. Iteratoren gir en praktisk måte å få tilgang til både nøkkelen og den tilhørende verdien til det funnet elementet.

Eksempel 2:

Her er et annet enkelt eksempel på unordered_map::find()-funksjonen. Denne koden demonstrerer bruken av 'unordered_map' for å lagre de boolske verdiene knyttet til heltallsnøkler, og bruker deretter funn()-funksjonen for å sjekke om det finnes spesifikke nøkler. La oss se følgende kode og deretter forstå hvordan den fungerer:

#include

bruker navneområde std ;

int hoved- ( ) {

uordnet_kart < int , bool > unomp ;

unomp [ 2 ] = ekte ;

unomp [ 67 ] = falsk ;

unomp [ Fire fem ] = ekte ;

unomp [ 98 ] = falsk ;

hvis ( unomp. finne ( 67 ) == unomp. slutt ( ) )

cout << 'Element ikke funnet' << endl ;

ellers

cout << 'Element funnet' << endl ;

hvis ( unomp. finne ( 42 ) == unomp. slutt ( ) )

cout << 'Element ikke funnet' << endl ;

ellers

cout << 'Element funnet' << endl ;

komme tilbake 0 ;

}

Her er en detaljert beskrivelse av koden:

#include

Denne linjen inkluderer en overskriftsfil som dekker de mest standard C++-bibliotekene som ofte brukes i konkurrerende programmering. I en vanlig C++-utvikling anbefales det imidlertid å inkludere de spesifikke overskriftene.

uordnet_kart < int , bool > unomp ;

Et 'unordered_map' kalt 'unomp' opprettes med heltallsnøkler og boolske verdier.

unomp [ 2 ] = ekte ;

unomp [ 67 ] = falsk ;

unomp [ Fire fem ] = ekte ;

unomp [ 98 ] = falsk ;

Nøkkel-verdi-parene settes inn i 'uordnet_kartet'. Hver nøkkel (heltall) er assosiert med en boolsk verdi.

hvis ( unomp. finne ( 67 ) == unomp. slutt ( ) )

cout << 'Element ikke funnet' << endl ;

ellers

cout << 'Element funnet' << endl ;

Finn()-funksjonen brukes i if-else-betingelsen for å søke etter spesifikke nøkler (67 og 42) i 'unordered_map'. Hvis nøkkelen blir funnet, skrives 'Element funnet' ut. Ellers skrives 'Element ikke funnet' ut. Se følgende utgang:

Denne koden viser den grunnleggende bruken av 'unordered_map' og funn()-funksjonen for å bestemme tilstedeværelsen eller fraværet av spesifikke nøkler i kartet.

Eksempel 3:

La oss utforske et annet eksempel som demonstrerer funnet av en verdi ved å gi et input under kjøring. Dette enkle programmet bruker et 'unordered_map' for å lagre navnene (som nøkler) og tilhørende numeriske verdier (i dette tilfellet representerer noen attributter). Den ber deretter brukeren om å skrive inn et navn, søke etter det navnet på kartet ved å bruke fun()-funksjonen og skrive ut den tilknyttede verdien hvis navnet blir funnet. Koden er gitt i følgende for din referanse:

#include

#inkluder

#include

bruker navneområde std ;

int hoved- ( ) {

std :: uordnet_kart < std :: streng , dobbelt > unomp = {

{ 'Herry' , 23 } ,

{ 'Andre' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

streng hvem ;

cout << 'Hvem ser du etter? ' ;

getline ( spiser , WHO ) ;

uordnet_kart < streng , dobbelt >:: const_iterator fnd = unomp. finne ( WHO ) ;

hvis ( fnd == unomp. slutt ( ) )

cout << 'ikke funnet' ;

ellers

cout << endl << fnd -> først << ' er ' << fnd -> sekund << endl ;

komme tilbake 0 ;

}

Følgende er oppdelingen av koden for din forståelse:

uordnet_kart < streng , dobbelt > unomp = { } ;

Et 'unordered_map' kalt 'unomp' lages med strengnøkler (navn) og doble verdier.

streng hvem ;

Brukeren blir bedt om å skrive inn et navn på skjermen og inndata lagres i 'hvem'-strengvariabelen.

uordnet_kart < streng , dobbelt >:: const_iterator fnd = unomp. finne ( WHO ) ;

Finn()-funksjonen brukes til å søke etter det angitte navnet i 'uordnet_kartet'. Resultatet lagres i 'fnd' iteratoren.

hvis ( fnd == unomp. slutt ( ) )

cout << 'ikke funnet' ;

ellers

cout << endl << fnd -> først << ' er ' << fnd -> sekund << endl ;

Hvis 'fnd'-iteratoren når slutten av 'unordered_map' (end()), betyr det at navnet ikke ble funnet og 'ikke funnet' skrives ut. Ellers skrives navnet og tilhørende verdi ut. Her er utgangen av koden:

Denne koden fungerer i hovedsak som et enkelt navneoppslagsverktøy ved å bruke et 'unordered_map'. Den tar brukerens input, søker etter navnet på kartet og gir den tilhørende verdien hvis navnet blir funnet.

Konklusjon

Funksjonen unordered_map::find() i C++ gir en kraftig mekanisme for å effektivt finne elementene i 'unordered_map'-beholdere. Den konstante gjennomsnittlige tidskompleksiteten gjør den til et foretrukket valg for søkeoperasjoner i scenarier der nøkkelverdi-parene må nås raskt. De medfølgende eksemplene viser den praktiske bruken, og understreker dens enkelhet og effektivitet. Avslutningsvis, å mestre unordered_map::find()-funksjonen forbedrer en C++-programmerers evne til å utnytte det fulle potensialet til 'unordered_map'-beholdere, noe som bidrar til å lage optimaliserte og høyytelsesapplikasjoner.