Funcția C++ Unordered_Map::Find().

Functia C Unordered Map Find



C++ este renumit pentru biblioteca sa de șabloane standard (STL) puternică și versatilă, oferind dezvoltatorilor o suită extinsă de containere, iteratoare, algoritmi și funcții foarte eficiente, gata de utilizare. Printre acestea, „unordered_map” se remarcă ca un jucător cheie în stocarea eficientă a valorii cheie și accesul de mare viteză, ceea ce îl face o alegere excelentă pentru aplicațiile în care recuperarea rapidă este primordială. În inima acestei „hărți_nordonate”, funcția unordered_map::find() este un instrument vital. Această structură de date este optimizată pentru acces de mare viteză și stocare cheie-valoare. Acest articol oferă o examinare cuprinzătoare a funcției unordered_map::find() prin dezvăluirea sintaxei și parametrilor acesteia cu ajutorul unor exemple ilustrative.

Înțelegerea Unordered_Map::Find()

Funcția unordered_map::find() este concepută pentru a localiza un element care este asociat cu o cheie specificată într-o „unordered_map”. Declarația sa variază în funcție de faptul că obiectul este calificat constant sau nu, oferind flexibilitate în utilizarea sa.

găsirea iteratorului ( const tip_cheie & k ) ;

Acesta este folosit atunci când „unordered_map” nu este calificat constant. Acest cod returnează un iterator care indică elementul găsit.







const_iterator găsi ( const tip_cheie & k ) const ;

Această versiune este aplicabilă atunci când „unordered_map” este calificat constant. Returnează un iterator constant cu un comportament similar cu versiunea non-constant.



Parametri:



Este nevoie de un singur parametru, „k”, care este cheia care trebuie căutată în „unordered_map”.





Valoare returnată:

Valoarea returnată depinde de calificarea obiectului „unordered_map”.

Metoda returnează un iterator non-constant dacă obiectul nu este calificat în mod constant.



Dacă obiectul este calificat constant, metoda returnează un iterator constant.

Complexitatea timpului:

Complexitatea de timp a std::unordered_map::find() este crucială pentru înțelegerea eficienței sale:

În cazul mediu, complexitatea timpului este constantă (O(1)), făcându-l foarte eficient pentru cazurile de utilizare tipice.

În cel mai rău caz, complexitatea timpului devine liniară (O(n)). Cu toate acestea, acest scenariu este rar în practică.

Exemplul 1:

Să explorăm un exemplu practic pentru a ilustra utilizarea și beneficiile unordered_map::find(). În acest exemplu, un „unordered_map” este creat cu caracterele ca chei și numerele întregi corespunzătoare ca valori. Funcția find() localizează elementul care este legat cu cheia lui „p”. Iteratorul „ittr” este legat de elementul găsit, iar datele acestuia sunt tipărite pe consolă. Vezi următorul cod:

#include

#include

folosind namespace std ;

int principal ( gol ) {

hartă_neordonată < char , int > unmp = {

{ 'În' , 9 } ,

{ 'A' , 6 } ,

{ 'p' , 8 } ,

{ 'm' , 3 } ,

{ 's' , 4 } } ;

auto ittr = unmp. găsi ( 'p' ) ;

cout << 'Iterator' ' << ittr->first << ' ' indică către = ' << ittr -> al doilea << endl ;

întoarcere 0 ; }

Să defalcăm codul pentru a avea o înțelegere clară și mai bună a acestuia:

#include

#include

Sunt incluse fișierele antet necesare: pentru operațiunile de intrare/ieșire și pentru utilizarea containerului „unordered_map”.

folosind namespace std ;

Spațiul de nume „std” simplifică codul. Vă permite să utilizați elementele din biblioteca standard C++ fără să le prefixați cu „std::”.

hartă_neordonată < char , int > unmp = { { 'În' , 9 } , { 'A' , 6 } , { 'p' , 8 } , { 'm' , 3 } , { 's' , 4 } } ;

Un „unordered_map” numit „um” este creat cu caracterele ('w', 'a', 'p', 'm', 's') ca chei și numerele întregi corespunzătoare (9, 6, 8, 3, 4 ) ca valori.

auto ittr = unmp. găsi ( 'p' ) ;

Funcția find() este folosită pentru a căuta elementul cu cheia „p” în „unordered_map” care este „unomp”. Iteratorul „ittr” indică elementul identificat.

cout << 'Iterator' ' << ittr->first << ' ' indică către = ' << ittr -> al doilea << endl ;

Conținutul la care este indicat de iterator este tipărit pe consolă. Tipărește cheia („p”) și valoarea asociată (8) în acest caz.

întoarcere 0 ;

Programul se încheie, returnând 0 pentru a indica o execuție cu succes.

Ieșirea codului este dată în următoarele pentru referință:

Acest cod este un exemplu simplu de utilizare a unordered_map::find() pentru a căuta și a accesa eficient elementele dintr-o „unordered_map”. Iteratorul oferă o modalitate convenabilă de a accesa atât cheia, cât și valoarea asociată a elementului găsit.

Exemplul 2:

Iată un alt exemplu simplu al funcției unordered_map::find(). Acest cod demonstrează utilizarea „unordered_map” pentru a stoca valorile booleene asociate cheilor întregi și apoi utilizează funcția find() pentru a verifica existența unor chei specifice. Să vedem următorul cod și apoi să înțelegem cum funcționează:

#include

folosind namespace std ;

int principal ( ) {

hartă_neordonată < int , bool > unmp ;

unmp [ 2 ] = Adevărat ;

unmp [ 67 ] = fals ;

unmp [ Patru cinci ] = Adevărat ;

unmp [ 98 ] = fals ;

dacă ( unmp. găsi ( 67 ) == unmp. Sfârşit ( ) )

cout << „Element nu a fost găsit” << endl ;

altfel

cout << „Element găsit” << endl ;

dacă ( unmp. găsi ( 42 ) == unmp. Sfârşit ( ) )

cout << „Element nu a fost găsit” << endl ;

altfel

cout << „Element găsit” << endl ;

întoarcere 0 ;

}

Iată o descriere detaliată a codului:

#include

Această linie include un fișier antet care acoperă cele mai standard biblioteci C++ care sunt adesea folosite în programarea competitivă. Cu toate acestea, într-o dezvoltare obișnuită C++, este recomandat să includeți anteturile specifice.

hartă_neordonată < int , bool > unmp ;

O „unordered_map” numită „unomp” este creată cu chei întregi și valori booleene.

unmp [ 2 ] = Adevărat ;

unmp [ 67 ] = fals ;

unmp [ Patru cinci ] = Adevărat ;

unmp [ 98 ] = fals ;

Perechile cheie-valoare sunt inserate în „unordered_map”. Fiecare cheie (întreg) este asociată cu o valoare booleană.

dacă ( unmp. găsi ( 67 ) == unmp. Sfârşit ( ) )

cout << „Element nu a fost găsit” << endl ;

altfel

cout << „Element găsit” << endl ;

Funcția find() este folosită în condiția if-else pentru a căuta anumite chei (67 și 42) în „unordered_map”. Dacă cheia este găsită, se imprimă „Element găsit”. În caz contrar, „Element nu a fost găsit” este tipărit. Vedeți următoarea ieșire:

Acest cod prezintă utilizarea de bază a „unordered_map” și a funcției find() pentru a determina prezența sau absența unor chei specifice în hartă.

Exemplul 3:

Să explorăm un alt exemplu care demonstrează găsirea unei valori prin furnizarea unei intrări în timpul execuției. Acest program simplu folosește un „unordered_map” pentru a stoca numele (sub formă de chei) și valorile numerice asociate (în acest caz, reprezentând unele atribute). Apoi, solicită utilizatorului să introducă un nume, să caute acel nume pe hartă folosind funcția find() și să imprime valoarea asociată dacă numele este găsit. Codul este dat în următoarele pentru referință:

#include

#include <șir>

#include

folosind namespace std ;

int principal ( ) {

std :: hartă_neordonată < std :: şir , dubla > unmp = {

{ 'Herry' , 23 } ,

{ 'Alții' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

string cine ;

cout << 'Pe cine cauți? ' ;

getline ( mâncând , OMS ) ;

hartă_neordonată < şir , dubla >:: const_iterator fnd = unmp. găsi ( OMS ) ;

dacă ( fnd == unmp. Sfârşit ( ) )

cout << 'nu a fost găsit' ;

altfel

cout << endl << fnd -> primul << ' este ' << fnd -> al doilea << endl ;

întoarcere 0 ;

}

Următoarea este defalcarea codului pentru înțelegerea dvs.:

hartă_neordonată < şir , dubla > unmp = { } ;

Un „unordered_map” numit „unomp” este creat cu chei șir (nume) și valori duble.

string cine ;

Utilizatorului i se cere să introducă un nume pe ecran, iar intrarea este stocată în variabila șir „cine”.

hartă_neordonată < şir , dubla >:: const_iterator fnd = unmp. găsi ( OMS ) ;

Funcția find() este folosită pentru a căuta numele introdus în „unordered_map”. Rezultatul este stocat în iteratorul „fnd”.

dacă ( fnd == unmp. Sfârşit ( ) )

cout << 'nu a fost găsit' ;

altfel

cout << endl << fnd -> primul << ' este ' << fnd -> al doilea << endl ;

Dacă iteratorul „fnd” ajunge la sfârșitul „unordered_map” (end()), înseamnă că numele nu a fost găsit și „not found” este tipărit. În caz contrar, numele și valoarea asociată sunt tipărite. Iată rezultatul codului:

Acest cod acționează în esență ca un simplu instrument de căutare a numelui folosind un „unordered_map”. Preia intrarea utilizatorului, caută numele pe hartă și oferă valoarea asociată dacă numele este găsit.

Concluzie

Funcția unordered_map::find() din C++ oferă un mecanism puternic pentru a localiza eficient elementele din containerele „unordered_map”. Complexitatea constantă a timpului mediu îl face o alegere preferată pentru operațiunile de căutare în scenariile în care perechile cheie-valoare trebuie accesate rapid. Exemplele furnizate prezintă utilizarea sa practică, subliniind simplitatea și eficacitatea acestuia. În concluzie, stăpânirea funcției unordered_map::find() îmbunătățește capacitatea unui programator C++ de a valorifica întregul potențial al containerelor „unordered_map”, contribuind la crearea de aplicații optimizate și de înaltă performanță.