Funkce C++ Unordered_Map::Find().

Funkce C Unordered Map Find



C++ je proslulý svou výkonnou a všestrannou knihovnou standardních šablon (STL), která poskytuje vývojářům rozsáhlou sadu vysoce účinných kontejnerů, iterátorů, algoritmů a funkcí připravených k použití. Mezi nimi vyniká „uordered_map“ jako klíčový hráč v efektivním ukládání klíč-hodnota a vysokorychlostním přístupu, což z něj činí vynikající volbu pro aplikace, kde je rychlé načítání prvořadé. V srdci této „unordered_map“ je funkce unordered_map::find() životně důležitým nástrojem. Tato datová struktura je optimalizována pro vysokorychlostní přístup a úložiště klíč–hodnota. Tento článek nabízí komplexní prozkoumání funkce unordered_map::find() odhalením její syntaxe a parametrů pomocí názorných příkladů.

Porozumění Unordered_Map::Find()

Funkce unordered_map::find() je navržena k vyhledání prvku, který je spojen se zadaným klíčem v rámci „unordered_map“. Jeho deklarace se liší v závislosti na tom, zda je objekt konstantní nebo ne, což poskytuje flexibilitu v jeho použití.

najít iterátor ( konst key_type & k ) ;

Toto se používá, když „unordered_map“ není konstantní. Tento kód vrací iterátor, který ukazuje na nalezený prvek.







const_iterator najít ( konst key_type & k ) konst ;

Tato verze je použitelná, když je „uordered_map“ konstantní. Vrací konstantní iterátor s podobným chováním jako nekonstantní verze.



Parametry:



Vyžaduje jediný parametr, „k“, což je klíč, který se má hledat v „unordered_map“.





Návratová hodnota:

Vrácená hodnota závisí na kvalifikaci objektu „unordered_map“.

Metoda vrací nekonstantní iterátor, pokud objekt není neustále kvalifikovaný.



Pokud je objekt kvalifikovaný jako konstantní, metoda vrací konstantní iterátor.

Časová náročnost:

Časová složitost std::unordered_map::find() je zásadní pro pochopení její účinnosti:

V průměrném případě je časová složitost konstantní (O(1)), díky čemuž je pro typické případy použití vysoce efektivní.

V nejhorším případě se časová složitost stane lineární (O(n)). Tento scénář je však v praxi vzácný.

Příklad 1:

Podívejme se na praktický příklad, který ilustruje použití a výhody unordered_map::find(). V tomto příkladu je vytvořena „unordered_map“ se znaky jako klíči a odpovídajícími celými čísly jako hodnotami. Funkce find() vyhledá prvek, který je spojen s klíčem „p“. Iterátor „ittr“ je propojen s nalezeným prvkem a jeho data jsou vytištěna na konzoli. Viz následující kód:

#include

#include

pomocí jmenného prostoru std ;

int hlavní ( prázdnota ) {

neuspořádaná_mapa < char , int > neokázalý = {

{ 'V' , 9 } ,

{ 'A' , 6 } ,

{ 'p' , 8 } ,

{ 'm' , 3 } ,

{ 's' , 4 } } ;

auto ittr = neokázalý. nalézt ( 'p' ) ;

cout << 'Iterátor' ' << ittr->prvni << ' 'ukazuje na =' << ittr -> druhý << endl ;

vrátit se 0 ; }

Pojďme si kód rozebrat, abychom mu jasně a lépe porozuměli:

#include

#include

Jsou zahrnuty potřebné hlavičkové soubory: pro vstupní/výstupní operace a pro použití kontejneru „uordered_map“.

pomocí jmenného prostoru std ;

Jmenný prostor „std“ zjednodušuje kód. Umožňuje vám používat prvky ze standardní knihovny C++, aniž byste jim dávali předponu „std::“.

neuspořádaná_mapa < char , int > neokázalý = { { 'V' , 9 } , { 'A' , 6 } , { 'p' , 8 } , { 'm' , 3 } , { 's' , 4 } } ;

Vytvoří se „neuspořádaná_mapa“ s názvem „um“ se znaky („w“, „a“, „p“, „m“, „s“) jako klíči a odpovídajícími celými čísly (9, 6, 8, 3, 4 ) jako hodnoty.

auto ittr = neokázalý. nalézt ( 'p' ) ;

Funkce find() se používá k vyhledání prvku s klíčem „p“ v „unordered_map“, což je „unomp“. Iterátor „ittr“ ukazuje na identifikovaný prvek.

cout << 'Iterátor' ' << ittr->prvni << ' 'ukazuje na =' << ittr -> druhý << endl ;

Obsah, na který odkazuje iterátor, se vytiskne do konzoly. V tomto případě vytiskne klíč („p“) a přidruženou hodnotu (8).

vrátit se 0 ;

Program se ukončí a vrátí 0, což znamená úspěšné provedení.

Výstup kódu je uveden níže pro vaši referenci:

Tento kód je jednoduchým příkladem využití unordered_map::find() k efektivnímu vyhledávání a přístupu k prvkům v „unordered_map“. Iterátor poskytuje pohodlný způsob přístupu jak ke klíči, tak k přidružené hodnotě nalezeného prvku.

Příklad 2:

Zde je další jednoduchý příklad funkce unordered_map::find(). Tento kód demonstruje použití „unordered_map“ k uložení booleovských hodnot spojených s celočíselnými klíči a poté využívá funkci find() ke kontrole existence konkrétních klíčů. Podívejme se na následující kód a pak pochopíme, jak to funguje:

#include

pomocí jmenného prostoru std ;

int hlavní ( ) {

neuspořádaná_mapa < int , bool > neokázalý ;

neokázalý [ 2 ] = skutečný ;

neokázalý [ 67 ] = Nepravdivé ;

neokázalý [ Čtyři pět ] = skutečný ;

neokázalý [ 98 ] = Nepravdivé ;

-li ( neokázalý. nalézt ( 67 ) == neokázalý. konec ( ) )

cout << 'Prvek nenalezen' << endl ;

jiný

cout << 'Prvek nalezen' << endl ;

-li ( neokázalý. nalézt ( 42 ) == neokázalý. konec ( ) )

cout << 'Prvek nenalezen' << endl ;

jiný

cout << 'Prvek nalezen' << endl ;

vrátit se 0 ;

}

Zde je podrobný popis kódu:

#include

Tento řádek obsahuje hlavičkový soubor, který pokrývá většinu standardních knihoven C++, které se často používají v konkurenčním programování. Při běžném vývoji C++ se však doporučuje zahrnout konkrétní záhlaví.

neuspořádaná_mapa < int , bool > neokázalý ;

Vytvoří se „unordered_map“ s názvem „unomp“ s celočíselnými klíči a booleovskými hodnotami.

neokázalý [ 2 ] = skutečný ;

neokázalý [ 67 ] = Nepravdivé ;

neokázalý [ Čtyři pět ] = skutečný ;

neokázalý [ 98 ] = Nepravdivé ;

Páry klíč–hodnota jsou vloženy do „unordered_map“. Každý klíč (celé číslo) je spojen s logickou hodnotou.

-li ( neokázalý. nalézt ( 67 ) == neokázalý. konec ( ) )

cout << 'Prvek nenalezen' << endl ;

jiný

cout << 'Prvek nalezen' << endl ;

Funkce find() se používá v rámci podmínky if-else k hledání konkrétních klíčů (67 a 42) v rámci „unordered_map“. Pokud je klíč nalezen, vytiskne se „Nalezen prvek“. V opačném případě se vytiskne „Element not found“. Podívejte se na následující výstup:

Tento kód ukazuje základní použití „unordered_map“ a funkce find() k určení přítomnosti nebo nepřítomnosti konkrétních klíčů v mapě.

Příklad 3:

Podívejme se na další příklad, který demonstruje nalezení hodnoty poskytnutím vstupu za běhu. Tento jednoduchý program používá „unordered_map“ k uložení jmen (jako klíče) a souvisejících číselných hodnot (v tomto případě představujících některé atributy). Poté vyzve uživatele, aby zadal jméno, vyhledal toto jméno v mapě pomocí funkce find() a vytiskl přidruženou hodnotu, pokud je jméno nalezeno. Kód je uveden níže pro vaši informaci:

#include

#include <řetězec>

#include

pomocí jmenného prostoru std ;

int hlavní ( ) {

std :: neuspořádaná_mapa < std :: tětiva , dvojnásobek > neokázalý = {

{ 'herry' , 23 } ,

{ 'ostatní' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

řetězec kdo ;

cout << 'Koho hledáš? ' ;

getline ( jíst , SZO ) ;

neuspořádaná_mapa < tětiva , dvojnásobek >:: const_iterator najít = neokázalý. nalézt ( SZO ) ;

-li ( najít == neokázalý. konec ( ) )

cout << 'nenalezeno' ;

jiný

cout << endl << najít -> První << ' je ' << najít -> druhý << endl ;

vrátit se 0 ;

}

Níže je uveden rozpis kódu pro pochopení:

neuspořádaná_mapa < tětiva , dvojnásobek > neokázalý = { } ;

Vytvoří se „unordered_map“ s názvem „unomp“ s řetězcovými klíči (jmény) a dvojitými hodnotami.

řetězec kdo ;

Uživatel je na obrazovce vyzván k zadání jména a vstup se uloží do řetězcové proměnné „kdo“.

neuspořádaná_mapa < tětiva , dvojnásobek >:: const_iterator najít = neokázalý. nalézt ( SZO ) ;

Funkce find() se používá k vyhledání zadaného jména v „unordered_map“. Výsledek je uložen v iterátoru „fnd“.

-li ( najít == neokázalý. konec ( ) )

cout << 'nenalezeno' ;

jiný

cout << endl << najít -> První << ' je ' << najít -> druhý << endl ;

Pokud iterátor „fnd“ dosáhne konce „unordered_map“ (end()), znamená to, že název nebyl nalezen a vytiskne se „nenalezeno“. Jinak se vytiskne název a přidružená hodnota. Zde je výstup kódu:

Tento kód v podstatě funguje jako jednoduchý nástroj pro vyhledávání názvu pomocí „unordered_map“. Převezme vstup od uživatele, vyhledá název v mapě a poskytne související hodnotu, pokud je název nalezen.

Závěr

Funkce unordered_map::find() v C++ poskytuje výkonný mechanismus pro efektivní lokalizaci prvků v kontejnerech „unordered_map“. Jeho konstantní průměrná časová složitost z něj dělá preferovanou volbu pro vyhledávací operace ve scénářích, kde je potřeba rychle přistupovat k párům klíč-hodnota. Uvedené příklady ukazují jeho praktické využití s ​​důrazem na jeho jednoduchost a efektivitu. Závěrem lze říci, že zvládnutí funkce unordered_map::find() zlepšuje schopnost programátorů C++ využít plný potenciál kontejnerů „unordered_map“, což přispívá k vytváření optimalizovaných a vysoce výkonných aplikací.