C++ Unordered_Map::Find() függvény

C Unordered Map Find Fuggveny



A C++ nagy teljesítményű és sokoldalú szabványos sablonkönyvtáráról (STL) híres, amely a fejlesztők számára a használatra kész, rendkívül hatékony konténerek, iterátorok, algoritmusok és funkciók széles skáláját kínálja. Ezek közül az „unordered_map” kiemelkedik a hatékony kulcsérték-tárolás és a nagysebességű hozzáférés kulcsszereplőjeként, így kiváló választás az olyan alkalmazásokhoz, ahol a gyors visszakeresés a legfontosabb. Ennek az „unordered_map”-nek a szívében az unordered_map::find() függvény létfontosságú eszköz. Ezt az adatstruktúrát a nagy sebességű hozzáférésre és a kulcsértékek tárolására optimalizálták. Ez a cikk az unordered_map::find() függvény átfogó vizsgálatát kínálja úgy, hogy szemléltető példák segítségével feltárja szintaxisát és paramétereit.

Az Unordered_Map::Find()

Az unordered_map::find() függvény arra szolgál, hogy megkeresse az „unordered_map”-en belül egy adott kulcshoz társított elemet. A deklarációja attól függően változik, hogy az objektum állandó minősítésű-e vagy sem, ami rugalmasságot biztosít a használatában.

iterátor keresés ( const kulcs_típus & k ) ;

Ez akkor használatos, ha az „unordered_map” nem állandó minősítésű. Ez a kód egy iterátort ad vissza, amely a talált elemre mutat.







const_iterator keresés ( const kulcs_típus & k ) const ;

Ez a verzió akkor alkalmazható, ha az „unordered_map” állandó minősítésű. A nem állandó változathoz hasonló viselkedésű állandó iterátort ad vissza.



Paraméterek:



Egyetlen „k” paraméterre van szükség, amely az „unordered_map”-ben keresendő kulcs.





Visszatérési érték:

A visszatérési érték az „unordered_map” objektum minősítésétől függ.

A metódus nem állandó iterátort ad vissza, ha az objektum nem folyamatosan minősített.



Ha az objektum állandó minősítésű, a metódus egy állandó iterátort ad vissza.

Időbeli összetettség:

Az std::unordered_map::find() időbeli összetettsége kulcsfontosságú a hatékonyságának megértéséhez:

Átlagos esetben az időbonyolultság állandó (O(1)), ami rendkívül hatékony a tipikus felhasználási esetekben.

A legrosszabb forgatókönyv esetén az időbonyolultság lineárissá válik (O(n)). Ez a forgatókönyv azonban ritka a gyakorlatban.

1. példa:

Nézzünk meg egy gyakorlati példát az unordered_map::find() használatának és előnyeinek szemléltetésére. Ebben a példában egy „unordered_map” jön létre a karakterekkel kulcsként és a megfelelő egész számokkal értékként. A find() függvény megkeresi azt az elemet, amely a „p” kulcshoz kapcsolódik. Az ittr iterátor hozzá van kapcsolva a talált elemhez, és adatai kinyomtatásra kerülnek a konzolra. Lásd a következő kódot:

#include

#include

névtér std használatával ;

int fő- ( üres ) {

rendezetlen_térkép < char , int > unomp = {

{ 'Ban ben' , 9 } ,

{ 'a' , 6 } ,

{ 'p' , 8 } ,

{ 'én' , 3 } ,

{ 's' , 4 } } ;

auto ittr = unomp. megtalálja ( 'p' ) ;

cout << 'Iterátor' ' << ittr->első << ' ' mutat rá = ' << ittr -> második << endl ;

Visszatérés 0 ; }

Bontsuk fel a kódot, hogy világosan és jobban megértsük:

#include

#include

A szükséges fejlécfájlokat tartalmazza: a bemeneti/kimeneti műveletekhez és az „unordered_map” tároló használatához.

névtér std használatával ;

Az „std” névtér leegyszerűsíti a kódot. Lehetővé teszi a szabványos C++ könyvtár elemeinek használatát anélkül, hogy „std::” előtagot írna elő.

rendezetlen_térkép < char , int > unomp = { { 'Ban ben' , 9 } , { 'a' , 6 } , { 'p' , 8 } , { 'én' , 3 } , { 's' , 4 } } ;

Létrejön egy „um” nevű „unordered_map” karakterekkel ('w', 'a', 'p', 'm', 's') és a megfelelő egész számokkal (9, 6, 8, 3, 4). ) értékként.

auto ittr = unomp. megtalálja ( 'p' ) ;

A find() függvény arra szolgál, hogy megkeresse az elemet a „p” billentyűvel az „unordered_map”-ben, ami „unomp”. Az „ittr” iterátor az azonosított elemre mutat.

cout << 'Iterátor' ' << ittr->első << ' ' mutat erre = ' << ittr -> második << endl ;

Az iterátor által mutatott tartalom a konzolra kerül kinyomtatásra. Ebben az esetben kiírja a kulcsot („p”) és a hozzá tartozó értéket (8).

Visszatérés 0 ;

A program leáll, és 0-t ad vissza, jelezve a sikeres végrehajtást.

A kód kimenete az alábbiakban található referenciaként:

Ez a kód egy egyszerű példa az unordered_map::find() használatára az „unordered_map” elemeinek hatékony keresésére és elérésére. Az iterátor kényelmes módot biztosít a kulcs és a talált elem társított értékének eléréséhez.

2. példa:

Íme egy másik egyszerű példa az unordered_map::find() függvényre. Ez a kód bemutatja az „unordered_map” használatát az egész kulcsokhoz társított logikai értékek tárolására, majd a find() függvényt használja bizonyos kulcsok meglétének ellenőrzésére. Lássuk a következő kódot, és értsük meg, hogyan működik:

#include

névtér std használatával ;

int fő- ( ) {

rendezetlen_térkép < int , bool > unomp ;

unomp [ 2 ] = igaz ;

unomp [ 67 ] = hamis ;

unomp [ Négy öt ] = igaz ;

unomp [ 98 ] = hamis ;

ha ( unomp. megtalálja ( 67 ) == unomp. vége ( ) )

cout << 'Az elem nem található' << endl ;

más

cout << 'Elem található' << endl ;

ha ( unomp. megtalálja ( 42 ) == unomp. vége ( ) )

cout << 'Az elem nem található' << endl ;

más

cout << 'Elem található' << endl ;

Visszatérés 0 ;

}

Itt található a kód részletes leírása:

#include

Ez a sor egy fejlécfájlt tartalmaz, amely lefedi a legtöbb szabványos C++ könyvtárat, amelyet gyakran használnak a versenyprogramozásban. A szokásos C++ fejlesztéseknél azonban ajánlatos az adott fejléceket belefoglalni.

rendezetlen_térkép < int , bool > unomp ;

Egy „unordered_map” nevű „unomp” jön létre egész kulcsokkal és logikai értékekkel.

unomp [ 2 ] = igaz ;

unomp [ 67 ] = hamis ;

unomp [ Négy öt ] = igaz ;

unomp [ 98 ] = hamis ;

A kulcs-érték párok az „unordered_map”-be kerülnek. Minden kulcshoz (egész számhoz) tartozik egy logikai érték.

ha ( unomp. megtalálja ( 67 ) == unomp. vége ( ) )

cout << 'Az elem nem található' << endl ;

más

cout << 'Elem található' << endl ;

A find() függvényt az if-else feltételen belül alkalmazzuk bizonyos kulcsok (67 és 42) keresésére az „unordered_map”-en belül. Ha a rendszer megtalálja a kulcsot, az „Elem található” kerül kinyomtatásra. Ellenkező esetben az „Elem nem található” felirat kerül kinyomtatásra. Lásd a következő kimenetet:

Ez a kód bemutatja az „unordered_map” és a find() függvény alapvető használatát, amellyel meghatározható, hogy bizonyos kulcsok vannak-e vagy hiányoznak a térképen.

3. példa:

Nézzünk meg egy másik példát, amely bemutatja egy érték megtalálását úgy, hogy futási időben megad egy bemenetet. Ez az egyszerű program egy „unordered_map”-et használ a nevek (kulcsokként) és a kapcsolódó számértékek (jelen esetben néhány attribútumra) tárolására. Ezután felszólítja a felhasználót, hogy írjon be egy nevet, keresse meg a nevet a térképen a find() függvény segítségével, és nyomtassa ki a kapcsolódó értéket, ha a név megtalálható. A kód az alábbiakban található referenciaként:

#include

#include

#include

névtér std használatával ;

int fő- ( ) {

std :: rendezetlen_térkép < std :: húr , kettős > unomp = {

{ 'Herry' , 23 } ,

{ 'Mások' , 7.4 } ,

{ 'Kalsoom' , 1.2 } } ;

húr ki ;

cout << 'Kit keresel? ' ;

getline ( enni , WHO ) ;

rendezetlen_térkép < húr , kettős >:: const_iterator fnd = unomp. megtalálja ( WHO ) ;

ha ( fnd == unomp. vége ( ) )

cout << 'nem található' ;

más

cout << endl << fnd -> első << 'van' << fnd -> második << endl ;

Visszatérés 0 ;

}

Az alábbiakban a kód lebontása látható, hogy megértse:

rendezetlen_térkép < húr , kettős > unomp = { } ;

Egy „unomp” nevű „unordered_map” jön létre karakterlánc-kulcsokkal (nevekkel) és kettős értékekkel.

húr ki ;

A felhasználónak meg kell adnia egy nevet a képernyőn, és a bevitel a „who” karakterlánc változóban tárolódik.

rendezetlen_térkép < húr , kettős >:: const_iterator fnd = unomp. megtalálja ( WHO ) ;

A find() függvény a beírt név megkeresésére szolgál az „unordered_map”-ben. Az eredmény az „fnd” iterátorban tárolódik.

ha ( fnd == unomp. vége ( ) )

cout << 'nem található' ;

más

cout << endl << fnd -> első << 'van' << fnd -> második << endl ;

Ha az „fnd” iterátor eléri az „unordered_map” (end()) végét, az azt jelenti, hogy a név nem található, és a „not found” kerül kinyomtatásra. Ellenkező esetben a név és a hozzá tartozó érték kinyomtatásra kerül. Íme a kód kimenete:

Ez a kód lényegében egy egyszerű névkereső eszközként működik egy „unordered_map” használatával. Felveszi a felhasználói bevitelt, megkeresi a nevet a térképen, és megadja a kapcsolódó értéket, ha a név megtalálható.

Következtetés

A C++ unordered_map::find() függvénye hatékony mechanizmust biztosít az elemek hatékony megtalálásához az „unordered_map” tárolókban. Állandó átlagos időbonyolultsága miatt előnyben részesített választás a keresési műveletekhez olyan forgatókönyvekben, ahol a kulcs-érték párokhoz gyorsan kell hozzáférni. A bemutatott példák bemutatják annak gyakorlati használatát, hangsúlyozva egyszerűségét és hatékonyságát. Összefoglalva, az unordered_map::find() függvény elsajátítása javítja a C++ programozó azon képességét, hogy kihasználja az „unordered_map” konténerekben rejlő lehetőségeket, hozzájárulva az optimalizált és nagy teljesítményű alkalmazások létrehozásához.