Funkcija C++ Unordered_Map::Find().

Funkcija C Unordered Map Find



C++ je poznat po svojoj snažnoj i svestranoj biblioteci standardnih predložaka (STL), koja razvojnim programerima pruža opsežan paket spremnih za korištenje, vrlo učinkovitih spremnika, iteratora, algoritama i funkcija. Među njima se 'unordered_map' ističe kao ključni igrač u učinkovitoj pohrani ključeva i vrijednosti i brzom pristupu, što ga čini izvrsnim izborom za aplikacije u kojima je brzo pronalaženje najvažnije. U središtu ove 'unordered_map', funkcija unordered_map::find() vitalni je instrument. Ova struktura podataka optimizirana je za brzi pristup i pohranu ključ-vrijednosti. Ovaj članak nudi sveobuhvatno ispitivanje funkcije unordered_map::find() otkrivajući njezinu sintaksu i parametre uz pomoć ilustrativnih primjera.

Razumijevanje Unordered_Map::Find()

Funkcija unordered_map::find() dizajnirana je za lociranje elementa koji je povezan s određenim ključem unutar 'unordered_map'. Njegova deklaracija varira ovisno o tome je li objekt konstantno kvalificiran ili ne, pružajući fleksibilnost u njegovoj upotrebi.

pronalazak iteratora ( konst tip_ključa i k ) ;

Ovo se koristi kada 'unordered_map' nije kvalificirana konstanta. Ovaj kod vraća iterator koji pokazuje na pronađeni element.







const_iterator pronaći ( konst tip_ključa i k ) konst ;

Ova verzija je primjenjiva kada je 'unordered_map' konstantno kvalificiran. Vraća konstantni iterator sa sličnim ponašanjem kao nekonstantna verzija.



Parametri:



Potreban je jedan parametar, 'k', koji je ključ koji se traži unutar 'unordered_map'.





Povratna vrijednost:

Povratna vrijednost ovisi o kvalifikaciji objekta 'unordered_map'.

Metoda vraća iterator koji nije konstantan ako objekt nije stalno kvalificiran.



Ako je objekt kvalificiran konstantom, metoda vraća konstantni iterator.

Vremenska složenost:

Vremenska složenost std::unordered_map::find() ključna je za razumijevanje njegove učinkovitosti:

U prosječnom slučaju, vremenska složenost je konstantna (O(1)), što ga čini vrlo učinkovitim za tipične slučajeve upotrebe.

U najgorem slučaju, vremenska složenost postaje linearna (O(n)). Međutim, ovaj scenarij je rijedak u praksi.

Primjer 1:

Istražimo praktični primjer za ilustraciju upotrebe i prednosti unordered_map::find(). U ovom primjeru, kreirana je 'unordered_map' sa znakovima kao ključevima i odgovarajućim cijelim brojevima kao vrijednostima. Funkcija find() locira element koji je povezan s ključem 'p'. Iterator “ittr” povezan je s pronađenim elementom i njegovi se podaci ispisuju na konzoli. Pogledajte sljedeći kôd:

#include

#include

koristeći prostor imena std ;

int glavni ( poništiti ) {

neuređena_mapa < char , int > unomp = {

{ 'U' , 9 } ,

{ 'a' , 6 } ,

{ 'p' , 8 } ,

{ 'm' , 3 } ,

{ 's' , 4 } } ;

auto ittr = unomp. pronaći ( 'p' ) ;

cout << 'Iterator' ' << ittr->prvi << ' ' pokazuje na = ' << ittr -> drugi << endl ;

povratak 0 ; }

Razdvojimo kod kako bismo ga bolje razumjeli:

#include

#include

Uključene su potrebne datoteke zaglavlja: za ulazno/izlazne operacije i za korištenje spremnika 'unordered_map'.

koristeći prostor imena std ;

Prostor imena 'std' pojednostavljuje kod. Omogućuje vam korištenje elemenata iz standardne C++ biblioteke bez dodavanja prefiksa 'std::'.

neuređena_mapa < char , int > unomp = { { 'U' , 9 } , { 'a' , 6 } , { 'p' , 8 } , { 'm' , 3 } , { 's' , 4 } } ;

“Unordered_map” pod nazivom “um” kreira se sa znakovima ('w', 'a', 'p', 'm', 's') kao ključevima i odgovarajućim cijelim brojevima (9, 6, 8, 3, 4 ) kao vrijednosti.

auto ittr = unomp. pronaći ( 'p' ) ;

Funkcija find() koristi se za traženje elementa s ključem 'p' u 'unordered_map' koji je 'unomp'. Iterator “ittr” pokazuje na identificirani element.

cout << 'Iterator' ' << ittr->prvi << ' ' pokazuje na = ' << ittr -> drugi << endl ;

Sadržaj na koji pokazuje iterator ispisuje se na konzoli. Ispisuje ključ ('p') i pridruženu vrijednost (8) u ovom slučaju.

povratak 0 ;

Program završava, vraćajući 0 da označi uspješno izvršenje.

Izlaz koda dan je u nastavku za vašu referencu:

Ovaj kod je jednostavan primjer korištenja unordered_map::find() za učinkovito traženje i pristup elementima unutar 'unordered_map'. Iterator pruža prikladan način za pristup i ključu i pridruženoj vrijednosti pronađenog elementa.

Primjer 2:

Evo još jednog jednostavnog primjera funkcije unordered_map::find(). Ovaj kôd demonstrira korištenje 'unordered_map' za pohranjivanje Booleovih vrijednosti povezanih s ključevima cijelog broja, a zatim koristi funkciju find() za provjeru postojanja određenih ključeva. Pogledajmo sljedeći kod i shvatimo kako funkcionira:

#include

koristeći prostor imena std ;

int glavni ( ) {

neuređena_mapa < int , bool > unomp ;

unomp [ 2 ] = pravi ;

unomp [ 67 ] = lažno ;

unomp [ Četiri pet ] = pravi ;

unomp [ 98 ] = lažno ;

ako ( unomp. pronaći ( 67 ) == unomp. kraj ( ) )

cout << 'Element nije pronađen' << endl ;

drugo

cout << 'Pronađen element' << endl ;

ako ( unomp. pronaći ( 42 ) == unomp. kraj ( ) )

cout << 'Element nije pronađen' << endl ;

drugo

cout << 'Pronađen element' << endl ;

povratak 0 ;

}

Evo detaljnog opisa koda:

#include

Ovaj redak uključuje datoteku zaglavlja koja pokriva većinu standardnih C++ biblioteka koje se često koriste u kompetitivnom programiranju. Međutim, u redovitom razvoju C++-a preporučuje se uključiti određena zaglavlja.

neuređena_mapa < int , bool > unomp ;

'Unordered_map' pod nazivom 'unomp' kreira se s ključevima cijelog broja i Booleovim vrijednostima.

unomp [ 2 ] = pravi ;

unomp [ 67 ] = lažno ;

unomp [ Četiri pet ] = pravi ;

unomp [ 98 ] = lažno ;

Parovi ključ-vrijednost umetnuti su u 'unordered_map'. Svaki ključ (cijeli broj) pridružen je Booleovoj vrijednosti.

ako ( unomp. pronaći ( 67 ) == unomp. kraj ( ) )

cout << 'Element nije pronađen' << endl ;

drugo

cout << 'Pronađen element' << endl ;

Funkcija find() koristi se unutar if-else uvjeta za traženje određenih ključeva (67 i 42) unutar 'unordered_map'. Ako je ključ pronađen, ispisuje se 'Element found'. U protivnom se ispisuje 'Element nije pronađen'. Pogledajte sljedeći izlaz:

Ovaj kod prikazuje osnovnu upotrebu 'unordered_map' i funkcije find() za utvrđivanje prisutnosti ili odsutnosti određenih ključeva u mapi.

Primjer 3:

Istražimo još jedan primjer koji demonstrira pronalaženje vrijednosti unosom podataka tijekom izvođenja. Ovaj jednostavan program koristi 'unordered_map' za pohranjivanje imena (kao ključeva) i pridruženih numeričkih vrijednosti (u ovom slučaju predstavljaju neke atribute). Zatim traži od korisnika da unese ime, potraži to ime na karti pomoću funkcije find() i ispiše pridruženu vrijednost ako je ime pronađeno. Kôd je naveden u nastavku za vašu referencu:

#include

#include

#include

koristeći prostor imena std ;

int glavni ( ) {

std :: neuređena_mapa < std :: niz , dvostruko > unomp = {

{ 'Herry' , 23 } ,

{ 'Drugi' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

string tko ;

cout << 'Koga tražite? ' ;

getline ( jelo , WHO ) ;

neuređena_mapa < niz , dvostruko >:: const_iterator pronaći = unomp. pronaći ( WHO ) ;

ako ( pronaći == unomp. kraj ( ) )

cout << 'nije pronađeno' ;

drugo

cout << endl << pronaći -> prvi << ' je ' << pronaći -> drugi << endl ;

povratak 0 ;

}

Slijedi raščlamba koda za vaše razumijevanje:

neuređena_mapa < niz , dvostruko > unomp = { } ;

'Unordered_map' pod nazivom 'unomp' kreira se s ključevima niza (imena) i dvostrukim vrijednostima.

string tko ;

Od korisnika se traži da unese ime na zaslonu, a unos se pohranjuje u varijablu niza 'who'.

neuređena_mapa < niz , dvostruko >:: const_iterator pronaći = unomp. pronaći ( WHO ) ;

Funkcija find() koristi se za traženje unesenog imena u “unordered_map”. Rezultat je pohranjen u iteratoru 'fnd'.

ako ( pronaći == unomp. kraj ( ) )

cout << 'nije pronađeno' ;

drugo

cout << endl << pronaći -> prvi << ' je ' << pronaći -> drugi << endl ;

Ako iterator “fnd” dođe do kraja “unordered_map” (end()), to znači da ime nije pronađeno i ispisuje se “not found”. U protivnom se ispisuje naziv i njegova pridružena vrijednost. Evo izlaza koda:

Ovaj kod u suštini djeluje kao jednostavan alat za traženje imena koristeći 'unordered_map'. Uzima korisnički unos, traži naziv na karti i pruža pridruženu vrijednost ako je naziv pronađen.

Zaključak

Funkcija unordered_map::find() u C++ pruža snažan mehanizam za učinkovito lociranje elemenata unutar spremnika 'unordered_map'. Njegova stalna prosječna vremenska složenost čini ga preferiranim izborom za operacije pretraživanja u scenarijima u kojima se parovima ključ-vrijednost mora pristupiti brzo. Navedeni primjeri pokazuju njegovu praktičnu upotrebu, naglašavajući njegovu jednostavnost i učinkovitost. Zaključno, ovladavanje unordered_map::find() funkcijom poboljšava sposobnost C++ programera da iskoristi puni potencijal 'unordered_map' spremnika, pridonoseći stvaranju optimiziranih i visokoučinkovitih aplikacija.