C++ Unordered_Map::Find() Funktion

C Unordered Map Find Funktion



C++ er kendt for sit kraftfulde og alsidige standardskabelonbibliotek (STL), der giver udviklerne en omfattende suite af klar-til-brug, højeffektive containere, iteratorer, algoritmer og funktioner. Blandt disse skiller 'unordered_map' sig ud som en nøglespiller inden for effektiv lagring af nøgleværdier og højhastighedsadgang, hvilket gør det til et fremragende valg til applikationer, hvor hurtig genfinding er altafgørende. I hjertet af dette 'unordered_map' er funktionen unordered_map::find() et vigtigt instrument. Denne datastruktur er optimeret til højhastighedsadgang og nøgleværdilagring. Denne artikel tilbyder en omfattende undersøgelse af funktionen unordered_map::find() ved at afsløre dens syntaks og parametre ved hjælp af illustrative eksempler.

Forstå Unordered_Map::Find()

Funktionen unordered_map::find() er designet til at lokalisere et element, der er knyttet til en specificeret nøgle i et 'unordered_map'. Dens erklæring varierer baseret på, om objektet er konstant-kvalificeret eller ej, hvilket giver fleksibilitet i dets brug.

iterator finde ( konst nøgletype & k ) ;

Dette bruges, når 'unordered_map' ikke er konstant-kvalificeret. Denne kode returnerer en iterator, der peger på det fundne element.







const_iterator find ( konst nøgletype & k ) konst ;

Denne version er anvendelig, når 'unordered_map' er konstant-kvalificeret. Det returnerer en konstant iterator med en lignende adfærd som den ikke-konstante version.



Parametre:



Det kræver en enkelt parameter, 'k', som er nøglen, der skal søges i 'unordered_map'.





Returneringsværdi:

Returværdien afhænger af kvalifikationen af ​​objektet 'unordered_map'.

Metoden returnerer en ikke-konstant iterator, hvis objektet ikke konstant er kvalificeret.



Hvis objektet er konstant-kvalificeret, returnerer metoden en konstant iterator.

Tidskompleksitet:

Tidskompleksiteten af ​​std::unordered_map::find() er afgørende for at forstå dens effektivitet:

I det gennemsnitlige tilfælde er tidskompleksiteten konstant (O(1)), hvilket gør den yderst effektiv til typiske brugssager.

I det værste tilfælde bliver tidskompleksiteten lineær (O(n)). Dette scenarie er dog sjældent i praksis.

Eksempel 1:

Lad os udforske et praktisk eksempel for at illustrere brugen og fordelene ved unordered_map::find(). I dette eksempel oprettes et 'unordered_map' med tegnene som nøgler og de tilsvarende heltal som værdier. Find()-funktionen lokaliserer det element, der er forbundet med tasten 'p'. Iteratoren 'ittr' er knyttet til det fundne element, og dets data udskrives til konsollen. Se følgende kode:

#include

#include

bruger navneområde std ;

int vigtigste ( ugyldig ) {

uordnet_kort < char , int > unomp = {

{ 'I' , 9 } ,

{ 'en' , 6 } ,

{ 'p' , 8 } ,

{ 'm' , 3 } ,

{ 's' , 4 } } ;

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

cout << 'Iterator' ' << ittr->første << ' ' peger på = ' << ittr -> anden << endl ;

Vend tilbage 0 ; }

Lad os opdele koden for at få en klar og bedre forståelse af den:

#include

#include

De nødvendige header-filer er inkluderet: til input/output-operationer og til brug af 'unordered_map'-beholderen.

bruger navneområde std ;

'std'-navnerummet forenkler koden. Det lader dig bruge elementerne fra standard C++-biblioteket uden at præfikse dem med 'std::'.

uordnet_kort < char , int > unomp = { { 'I' , 9 } , { 'en' , 6 } , { 'p' , 8 } , { 'm' , 3 } , { 's' , 4 } } ;

Et 'unordered_map' med navnet 'um' oprettes med tegnene ('w', 'a', 'p', 'm', 's') som nøgler og de tilsvarende heltal (9, 6, 8, 3, 4 ) som værdier.

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

Find()-funktionen bruges til at søge efter elementet med nøglen 'p' i 'unordered_map', som er 'unomp'. Iteratoren 'ittr' peger på det identificerede element.

cout << 'Iterator' ' << ittr->første << ' ' peger på = ' << ittr -> anden << endl ;

Det indhold, som iteratoren peger på, udskrives til konsollen. Den udskriver nøglen (“p”) og den tilhørende værdi (8) i dette tilfælde.

Vend tilbage 0 ;

Programmet afsluttes og returnerer 0 for at angive en vellykket udførelse.

Udgangen af ​​koden er givet i det følgende til din reference:

Denne kode er et simpelt eksempel på at bruge unordered_map::find() til effektivt at søge efter og få adgang til elementerne i et 'unordered_map'. Iteratoren giver en bekvem måde at få adgang til både nøglen og den tilhørende værdi af det fundne element.

Eksempel 2:

Her er et andet simpelt eksempel på unordered_map::find()-funktionen. Denne kode demonstrerer brugen af ​​'unordered_map' til at gemme de boolske værdier forbundet med heltalsnøgler og bruger derefter find()-funktionen til at kontrollere, om der findes specifikke nøgler. Lad os se følgende kode og derefter forstå, hvordan det virker:

#include

bruger navneområde std ;

int vigtigste ( ) {

uordnet_kort < int , bool > unomp ;

unomp [ 2 ] = rigtigt ;

unomp [ 67 ] = falsk ;

unomp [ Fire. Fem ] = rigtigt ;

unomp [ 98 ] = falsk ;

hvis ( unomp. Find ( 67 ) == unomp. ende ( ) )

cout << 'Element ikke fundet' << endl ;

andet

cout << 'Element fundet' << endl ;

hvis ( unomp. Find ( 42 ) == unomp. ende ( ) )

cout << 'Element ikke fundet' << endl ;

andet

cout << 'Element fundet' << endl ;

Vend tilbage 0 ;

}

Her er en detaljeret beskrivelse af koden:

#include

Denne linje inkluderer en header-fil, der dækker de mest standard C++-biblioteker, der ofte bruges i konkurrencedygtig programmering. I en almindelig C++-udvikling anbefales det dog at inkludere de specifikke overskrifter.

uordnet_kort < int , bool > unomp ;

Et 'unordered_map' med navnet 'unomp' oprettes med heltalsnøgler og booleske værdier.

unomp [ 2 ] = rigtigt ;

unomp [ 67 ] = falsk ;

unomp [ Fire. Fem ] = rigtigt ;

unomp [ 98 ] = falsk ;

Nøgle-værdi-parrene indsættes i 'uordnet_kortet'. Hver nøgle (heltal) er knyttet til en boolsk værdi.

hvis ( unomp. Find ( 67 ) == unomp. ende ( ) )

cout << 'Element ikke fundet' << endl ;

andet

cout << 'Element fundet' << endl ;

Find()-funktionen bruges i if-else-betingelsen til at søge efter specifikke nøgler (67 og 42) i 'unordered_map'. Hvis nøglen findes, udskrives 'Element fundet'. Ellers udskrives 'Element ikke fundet'. Se følgende output:

Denne kode viser den grundlæggende brug af 'unordered_map' og find()-funktionen til at bestemme tilstedeværelsen eller fraværet af specifikke nøgler på kortet.

Eksempel 3:

Lad os undersøge et andet eksempel, der demonstrerer fundet af en værdi ved at give et input under kørsel. Dette simple program bruger et 'unordered_map' til at gemme navnene (som nøgler) og tilhørende numeriske værdier (i dette tilfælde repræsenterer nogle attributter). Det beder derefter brugeren om at indtaste et navn, søge efter det navn på kortet ved hjælp af find()-funktionen og udskrive den tilknyttede værdi, hvis navnet er fundet. Koden er givet i det følgende til din reference:

#include

#include

#include

bruger navneområde std ;

int vigtigste ( ) {

std :: uordnet_kort < std :: snor , dobbelt > unomp = {

{ 'Herry' , 23 } ,

{ 'Andre' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

streng hvem ;

cout << 'Hvem leder du efter? ' ;

getline ( spise , WHO ) ;

uordnet_kort < snor , dobbelt >:: konst_iterator fnd = unomp. Find ( WHO ) ;

hvis ( fnd == unomp. ende ( ) )

cout << 'ikke fundet' ;

andet

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

Vend tilbage 0 ;

}

Følgende er opdelingen af ​​koden for din forståelse:

uordnet_kort < snor , dobbelt > unomp = { } ;

Et 'unordered_map' med navnet 'unomp' oprettes med strengnøgler (navne) og dobbelte værdier.

streng hvem ;

Brugeren bliver bedt om at indtaste et navn på skærmen, og inputtet gemmes i 'hvem'-strengvariablen.

uordnet_kort < snor , dobbelt >:: konst_iterator fnd = unomp. Find ( WHO ) ;

Find()-funktionen bruges til at søge efter det indtastede navn i 'unordered_map'. Resultatet gemmes i 'fnd' iteratoren.

hvis ( fnd == unomp. ende ( ) )

cout << 'ikke fundet' ;

andet

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

Hvis 'fnd' iteratoren når slutningen af ​​'unordered_map' (end()), betyder det, at navnet ikke blev fundet, og 'ikke fundet' udskrives. Ellers udskrives navnet og dets tilhørende værdi. Her er outputtet af koden:

Denne kode fungerer i det væsentlige som et simpelt navneopslagsværktøj ved hjælp af et 'unordered_map'. Det tager brugerens input, søger efter navnet på kortet og giver den tilhørende værdi, hvis navnet er fundet.

Konklusion

Funktionen unordered_map::find() i C++ giver en kraftfuld mekanisme til effektivt at lokalisere elementerne i 'unordered_map'-containere. Dens konstante gennemsnitlige tidskompleksitet gør den til et foretrukket valg til søgeoperationer i scenarier, hvor nøgleværdi-parrene skal tilgås hurtigt. De medfølgende eksempler viser dens praktiske brug og understreger dens enkelhed og effektivitet. Afslutningsvis forbedrer beherskelse af unordered_map::find()-funktionen en C++-programmørs evne til at udnytte det fulde potentiale af 'unordered_map'-containere, hvilket bidrager til skabelsen af ​​optimerede og højtydende applikationer.