C++ Unordered_Map::Find() Funktion

C Unordered Map Find Funktion



C++ är känt för sitt kraftfulla och mångsidiga standardmallbibliotek (STL), som ger utvecklarna en omfattande uppsättning färdiga att använda, högeffektiva behållare, iteratorer, algoritmer och funktioner. Bland dessa utmärker sig 'unordered_map' som en nyckelspelare inom effektiv lagring av nyckelvärden och höghastighetsåtkomst, vilket gör den till ett utmärkt val för applikationer där snabb hämtning är av största vikt. I hjärtat av denna 'unordered_map' är funktionen unordered_map::find() ett viktigt instrument. Denna datastruktur är optimerad för höghastighetsåtkomst och nyckel-värdelagring. Den här artikeln erbjuder en omfattande undersökning av unordered_map::find()-funktionen genom att avslöja dess syntax och parametrar med hjälp av illustrativa exempel.

Förstå Unordered_Map::Find()

Funktionen unordered_map::find() är utformad för att lokalisera ett element som är associerat med en specificerad nyckel inom en 'unordered_map'. Dess deklaration varierar beroende på om objektet är konstantkvalificerat eller inte, vilket ger flexibilitet i dess användning.

iterator hitta ( konst Nyckeltyp & k ) ;

Detta används när 'unordered_map' inte är konstantkvalificerad. Denna kod returnerar en iterator som pekar på det hittade elementet.







const_iterator hitta ( konst Nyckeltyp & k ) konst ;

Denna version är tillämplig när 'unordered_map' är konstantkvalificerad. Den returnerar en konstant iterator med liknande beteende som den icke-konstanta versionen.



Parametrar:



Det krävs en enda parameter, 'k', som är nyckeln som ska sökas i 'unordered_map'.





Returvärde:

Returvärdet beror på kvalifikationen för objektet 'unordered_map'.

Metoden returnerar en icke-konstant iterator om objektet inte ständigt är kvalificerat.



Om objektet är konstantkvalificerat returnerar metoden en konstant iterator.

Tidskomplexitet:

Tidskomplexiteten för std::unordered_map::find() är avgörande för att förstå dess effektivitet:

I genomsnittsfallet är tidskomplexiteten konstant (O(1)), vilket gör den mycket effektiv för typiska användningsfall.

I värsta fall blir tidskomplexiteten linjär (O(n)). Detta scenario är dock sällsynt i praktiken.

Exempel 1:

Låt oss utforska ett praktiskt exempel för att illustrera användningen och fördelarna med unordered_map::find(). I det här exemplet skapas en 'unordered_map' med tecknen som nycklar och motsvarande heltal som värden. Find()-funktionen lokaliserar elementet som är länkat med nyckeln till 'p'. Iteratorn 'ittr' är länkad till det hittade elementet och dess data skrivs ut till konsolen. Se följande kod:

#include

#inkludera

använder namnutrymme std ;

int huvud ( tomhet ) {

unordered_map < röding , int > unomp = {

{ 'I' , 9 } ,

{ 'a' , 6 } ,

{ 'p' , 8 } ,

{ 'm' , 3 } ,

{ 's' , 4 } } ;

bil ittr = unomp. hitta ( 'p' ) ;

cout << 'Iterator' ' << ittr->först << ' ' pekar på = ' << ittr -> andra << endl ;

lämna tillbaka 0 ; }

Låt oss dela upp koden för att få en tydlig och bättre förståelse av den:

#include

#inkludera

De nödvändiga rubrikfilerna ingår: för in-/utdataoperationer och för att använda 'unordered_map'-behållaren.

använder namnutrymme std ;

Namnutrymmet 'std' förenklar koden. Det låter dig använda elementen från standard C++-biblioteket utan att prefixet dem med 'std::'.

unordered_map < röding , int > unomp = { { 'I' , 9 } , { 'a' , 6 } , { 'p' , 8 } , { 'm' , 3 } , { 's' , 4 } } ;

En 'unordered_map' med namnet 'um' skapas med tecknen ('w', 'a', 'p', 'm', 's') som nycklar och motsvarande heltal (9, 6, 8, 3, 4 ) som värden.

bil ittr = unomp. hitta ( 'p' ) ;

Find()-funktionen används för att söka efter elementet med nyckeln 'p' i 'unordered_map' som är 'unomp'. Iteratorn 'ittr' pekar på det identifierade elementet.

cout << 'Iterator' ' << ittr->först << ' ' pekar på = ' << ittr -> andra << endl ;

Innehållet som iteratorn pekar på skrivs ut på konsolen. Den skriver ut nyckeln (“p”) och det tillhörande värdet (8) i detta fall.

lämna tillbaka 0 ;

Programmet avslutas och returnerar 0 för att indikera en framgångsrik exekvering.

Utdata från koden ges i följande för din referens:

Den här koden är ett enkelt exempel på att använda unordered_map::find() för att effektivt söka efter och komma åt elementen i en 'unordered_map'. Iteratorn ger ett bekvämt sätt att komma åt både nyckeln och det associerade värdet för det hittade elementet.

Exempel 2:

Här är ett annat enkelt exempel på unordered_map::find()-funktionen. Den här koden visar användningen av 'unordered_map' för att lagra de booleska värdena som är associerade med heltalsnycklar och använder sedan funktionen find() för att kontrollera förekomsten av specifika nycklar. Låt oss se följande kod och sedan förstå hur det fungerar:

#include

använder namnutrymme std ;

int huvud ( ) {

unordered_map < int , bool > unomp ;

unomp [ 2 ] = Sann ;

unomp [ 67 ] = falsk ;

unomp [ Fyra fem ] = Sann ;

unomp [ 98 ] = falsk ;

om ( unomp. hitta ( 67 ) == unomp. slutet ( ) )

cout << 'Element hittades inte' << endl ;

annan

cout << 'Element hittat' << endl ;

om ( unomp. hitta ( 42 ) == unomp. slutet ( ) )

cout << 'Element hittades inte' << endl ;

annan

cout << 'Element hittat' << endl ;

lämna tillbaka 0 ;

}

Här är en detaljerad beskrivning av koden:

#include

Den här raden innehåller en rubrikfil som täcker de vanligaste C++-biblioteken som ofta används i konkurrensutsatt programmering. Men i en vanlig C++-utveckling rekommenderas det att inkludera de specifika rubrikerna.

unordered_map < int , bool > unomp ;

En 'unordered_map' med namnet 'unomp' skapas med heltalsnycklar och booleska värden.

unomp [ 2 ] = Sann ;

unomp [ 67 ] = falsk ;

unomp [ Fyra fem ] = Sann ;

unomp [ 98 ] = falsk ;

Nyckel-värdeparen infogas i 'unordered_map'. Varje nyckel (heltal) är associerad med ett booleskt värde.

om ( unomp. hitta ( 67 ) == unomp. slutet ( ) )

cout << 'Element hittades inte' << endl ;

annan

cout << 'Element hittat' << endl ;

Find()-funktionen används i if-else-villkoret för att söka efter specifika nycklar (67 och 42) i 'unordered_map'. Om nyckeln hittas skrivs 'Element hittat' ut. Annars skrivs 'Element ej hittat' ut. Se följande utdata:

Den här koden visar den grundläggande användningen av 'unordered_map' och funktionen find() för att bestämma närvaron eller frånvaron av specifika nycklar i kartan.

Exempel 3:

Låt oss utforska ett annat exempel som visar att ett värde hittats genom att tillhandahålla en indata vid körning. Detta enkla program använder en 'unordered_map' för att lagra namnen (som nycklar) och tillhörande numeriska värden (i det här fallet representerar vissa attribut). Den uppmanar sedan användaren att ange ett namn, söka efter det namnet på kartan med funktionen find() och skriva ut det tillhörande värdet om namnet hittas. Koden ges i följande för din referens:

#include

#inkludera

#inkludera

använder namnutrymme std ;

int huvud ( ) {

std :: unordered_map < std :: sträng , dubbel > unomp = {

{ 'Herry' , 23 } ,

{ 'Andra' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

sträng vem ;

cout << 'Vem letar du efter? ' ;

getline ( äter , WHO ) ;

unordered_map < sträng , dubbel >:: konst_iterator fnd = unomp. hitta ( WHO ) ;

om ( fnd == unomp. slutet ( ) )

cout << 'hittades inte' ;

annan

cout << endl << fnd -> först << ' är ' << fnd -> andra << endl ;

lämna tillbaka 0 ;

}

Följande är uppdelningen av koden för din förståelse:

unordered_map < sträng , dubbel > unomp = { } ;

En 'unordered_map' med namnet 'unomp' skapas med strängnycklar (namn) och dubbla värden.

sträng vem ;

Användaren uppmanas att ange ett namn på skärmen och inmatningen lagras i strängvariabeln 'vem'.

unordered_map < sträng , dubbel >:: konst_iterator fnd = unomp. hitta ( WHO ) ;

Find()-funktionen används för att söka efter det angivna namnet i 'unordered_map'. Resultatet lagras i 'fnd' iteratorn.

om ( fnd == unomp. slutet ( ) )

cout << 'hittades inte' ;

annan

cout << endl << fnd -> först << ' är ' << fnd -> andra << endl ;

Om 'fnd'-iteratorn når slutet av 'unordered_map' (end()), betyder det att namnet inte hittades och 'not found' skrivs ut. Annars skrivs namnet och dess tillhörande värde ut. Här är utdata från koden:

Denna kod fungerar i huvudsak som ett enkelt namnsökningsverktyg med hjälp av en 'unordered_map'. Det tar användarens input, söker efter namnet på kartan och ger det tillhörande värdet om namnet hittas.

Slutsats

Funktionen unordered_map::find() i C++ tillhandahåller en kraftfull mekanism för att effektivt lokalisera elementen i 'unordered_map'-behållare. Dess konstanta genomsnittliga tidskomplexitet gör det till ett föredraget val för sökoperationer i scenarier där nyckel-värdeparen måste nås snabbt. De medföljande exemplen visar upp dess praktiska användning och betonar dess enkelhet och effektivitet. Sammanfattningsvis, att behärska unordered_map::find()-funktionen förbättrar en C++-programmerares förmåga att utnyttja den fulla potentialen hos 'unordered_map'-behållare, vilket bidrar till skapandet av optimerade och högpresterande applikationer.