Ц++ Функција Унордеред_Мап::Финд().

C Funkcija Unordered Map Find



Ц++ је познат по својој моћној и свестраној стандардној библиотеци шаблона (СТЛ), пружајући програмерима обиман пакет спремних за употребу, високо ефикасних контејнера, итератора, алгоритама и функција. Међу њима, „унордеред_мап“ се истиче као кључни играч у ефикасном складиштењу кључ-вредности и брзом приступу, што га чини одличним избором за апликације где је брзо проналажење најважније. У срцу ове „унордеред_мап“, функција унордеред_мап::финд() је витални инструмент. Ова структура података је оптимизована за брзи приступ и складиштење кључ/вредност. Овај чланак нуди свеобухватно испитивање функције унордеред_мап::финд() откривањем њене синтаксе и параметара уз помоћ илустративних примера.

Разумевање Унордеред_Мап::Финд()

Функција унордеред_мап::финд() је дизајнирана да лоцира елемент који је повезан са одређеним кључем унутар „унордеред_мап“. Његова декларација варира у зависности од тога да ли је објекат константно квалификован или не, пружајући флексибилност у његовој употреби.

итератор финд ( конст тип_кључа & к ) ;

Ово се користи када „унордеред_мап“ није константно квалификована. Овај код враћа итератор који указује на пронађени елемент.







цонст_итератор пронађи ( конст тип_кључа & к ) конст ;

Ова верзија је применљива када је „унордеред_мап“ константно квалификована. Враћа константни итератор са сличним понашањем неконстантне верзије.



Параметри:



Потребан је један параметар, „к“, који је кључ који треба претраживати унутар „унордеред_мап“.





Повратна вредност:

Повратна вредност зависи од квалификације „унордеред_мап“ објекта.

Метод враћа неконстантни итератор ако објекат није стално квалификован.



Ако је објекат константно квалификован, метода враћа константни итератор.

Временска сложеност:

Временска сложеност стд::унордеред_мап::финд() је кључна за разумевање његове ефикасности:

У просечном случају, временска сложеност је константна (О(1)), што га чини веома ефикасним за типичне случајеве употребе.

У најгорем случају, временска сложеност постаје линеарна (О(н)). Међутим, овај сценарио је реткост у пракси.

Пример 1:

Хајде да истражимо практичан пример да бисмо илустровали употребу и предности унордеред_мап::финд(). У овом примеру, креирана је „унордеред_мап“ са знаковима као кључевима и одговарајућим целим бројевима као вредностима. Функција финд() лоцира елемент који је повезан са кључем „п“. Итератор „иттр“ је повезан са пронађеним елементом и његови подаци се штампају на конзоли. Погледајте следећи код:

#инцлуде <иостреам>

#инцлуде <унордеред_мап>

користећи простор имена стд ;

инт главни ( празнина ) {

унордеред_мап < цхар , инт > уномп = {

{ 'у' , 9 } ,

{ 'а' , 6 } ,

{ 'п' , 8 } ,

{ 'м' , 3 } ,

{ 'с' , 4 } } ;

ауто иттр = уномп. наћи ( 'п' ) ;

цоут << 'Итератор' ' << иттр->први << ' ' указује на = ' << иттр -> друго << ендл ;

повратак 0 ; }

Хајде да рашчланимо код да бисмо га боље разумели:

#инцлуде <иостреам>

#инцлуде <унордеред_мап>

Укључене су неопходне датотеке заглавља: ​​<иостреам> за улазне/излазне операције и <унордеред_мап> за коришћење контејнера „унордеред_мап”.

користећи простор имена стд ;

Именски простор „стд“ поједностављује код. Омогућава вам да користите елементе из стандардне Ц++ библиотеке без додавања префикса „стд::“.

унордеред_мап < цхар , инт > уномп = { { 'у' , 9 } , { 'а' , 6 } , { 'п' , 8 } , { 'м' , 3 } , { 'с' , 4 } } ;

Креира се „унордеред_мап“ под називом „ум“ са знаковима ('в', 'а', 'п', 'м', 'с') као кључевима и одговарајућим целим бројевима (9, 6, 8, 3, 4 ) као вредности.

ауто иттр = уномп. наћи ( 'п' ) ;

Функција финд() се користи за тражење елемента са кључем „п“ у „унордеред_мап“ који је „уномп“. Итератор „иттр“ указује на идентификовани елемент.

цоут << 'Итератор' ' << иттр->први << ' ' указује на = ' << иттр -> друго << ендл ;

Садржај на који указује итератор се штампа на конзоли. У овом случају штампа кључ („п“) и одговарајућу вредност (8).

повратак 0 ;

Програм се завршава, враћајући 0 да би означио успешно извршење.

Излаз кода је дат у следећем за вашу референцу:

Овај код је једноставан пример коришћења унордеред_мап::финд() за ефикасно тражење и приступ елементима унутар „унордеред_мап“. Итератор пружа згодан начин за приступ и кључу и придруженој вредности пронађеног елемента.

Пример 2:

Ево још једног једноставног примера функције унордеред_мап::финд(). Овај код показује употребу „унордеред_мап“ за чување Булових вредности повезаних са целобројним кључевима, а затим користи функцију финд() да провери постојање одређених кључева. Хајде да видимо следећи код и онда разумемо како функционише:

#инцлуде <битс/стдц++.х>

користећи простор имена стд ;

инт главни ( ) {

унордеред_мап < инт , боол > уномп ;

уномп [ 2 ] = истина ;

уномп [ 67 ] = лажно ;

уномп [ Четири, пет ] = истина ;

уномп [ 98 ] = лажно ;

ако ( уномп. наћи ( 67 ) == уномп. крај ( ) )

цоут << „Елемент није пронађен“ << ендл ;

друго

цоут << 'Пронађен елемент' << ендл ;

ако ( уномп. наћи ( 42 ) == уномп. крај ( ) )

цоут << „Елемент није пронађен“ << ендл ;

друго

цоут << 'Пронађен елемент' << ендл ;

повратак 0 ;

}

Ево детаљног описа кода:

#инцлуде <битс/стдц++.х>

Ова линија укључује датотеку заглавља која покрива најстандардније Ц++ библиотеке које се често користе у конкурентском програмирању. Међутим, у редовном развоју Ц++-а, препоручује се укључивање специфичних заглавља.

унордеред_мап < инт , боол > уномп ;

Креира се „унордеред_мап“ под називом „уномп“ са целобројним кључевима и Буловим вредностима.

уномп [ 2 ] = истина ;

уномп [ 67 ] = лажно ;

уномп [ Четири, пет ] = истина ;

уномп [ 98 ] = лажно ;

Парови кључ/вредност се убацују у „унордеред_мап“. Сваки кључ (цео број) је повезан са Буловом вредношћу.

ако ( уномп. наћи ( 67 ) == уномп. крај ( ) )

цоут << „Елемент није пронађен“ << ендл ;

друго

цоут << 'Пронађен елемент' << ендл ;

Функција финд() се користи унутар услова иф-елсе за тражење одређених кључева (67 и 42) унутар „унордеред_мап“. Ако је кључ пронађен, штампа се „Елемент фоунд”. У супротном, штампа се „Елемент није пронађен“. Погледајте следећи излаз:

Овај код приказује основну употребу „унордеред_мап“ и функције финд() за одређивање присуства или одсуства одређених кључева на мапи.

Пример 3:

Хајде да истражимо још један пример који демонстрира проналажење вредности обезбеђивањем уноса током времена извршавања. Овај једноставан програм користи „унордеред_мап“ за чување имена (као кључева) и повезаних нумеричких вредности (у овом случају, које представљају неке атрибуте). Затим од корисника тражи да унесе име, потражи то име на мапи помоћу функције финд() и одштампа придружену вредност ако се пронађе име. Код је дат у следећем за вашу референцу:

#инцлуде <иостреам>

#инцлуде <стринг>

#инцлуде <унордеред_мап>

користећи простор имена стд ;

инт главни ( ) {

стд :: унордеред_мап < стд :: низ , дупло > уномп = {

{ 'Хери' , 23 } ,

{ 'други' , 7.4 } ,

{ 'Калсом' , 1.2 } } ;

низати ко ;

цоут << 'Кога тражиш? ' ;

гетлине ( једење , СЗО ) ;

унордеред_мап < низ , дупло >:: цонст_итератор фнд = уномп. наћи ( СЗО ) ;

ако ( фнд == уномп. крај ( ) )

цоут << 'није пронађен' ;

друго

цоут << ендл << фнд -> први << 'је' << фнд -> друго << ендл ;

повратак 0 ;

}

Следи преглед кода за ваше разумевање:

унордеред_мап < низ , дупло > уномп = { } ;

„унордеред_мап“ под називом „уномп“ се креира са стринг кључевима (именима) и двоструким вредностима.

низати ко ;

Од корисника се тражи да унесе име на екрану, а унос се чува у стринг променљивој „вхо“.

унордеред_мап < низ , дупло >:: цонст_итератор фнд = уномп. наћи ( СЗО ) ;

Функција финд() се користи за тражење унетог имена у „унордеред_мап“. Резултат се чува у итератору „фнд“.

ако ( фнд == уномп. крај ( ) )

цоут << 'није пронађен' ;

друго

цоут << ендл << фнд -> први << 'је' << фнд -> друго << ендл ;

Ако итератор „фнд“ дође до краја „унордеред_мап“ (енд()), то значи да име није пронађено и да је „нот фоунд“ одштампано. У супротном, име и његова придружена вредност се штампају. Ево излаза кода:

Овај код у суштини делује као једноставан алат за тражење имена користећи „унордеред_мап“. Узима кориснички унос, тражи име на мапи и пружа одговарајућу вредност ако се име пронађе.

Закључак

Функција унордеред_мап::финд() у Ц++-у пружа моћан механизам за ефикасно лоцирање елемената унутар „унордеред_мап” контејнера. Његова константна просечна временска сложеност чини га пожељним избором за операције претраживања у сценаријима где се паровима кључ-вредност мора приступити брзо. Наведени примери показују његову практичну употребу, наглашавајући његову једноставност и ефикасност. У закључку, савладавање функције унордеред_мап::финд() побољшава способност Ц++ програмера да искористи пуни потенцијал „унордеред_мап“ контејнера, доприносећи креирању оптимизованих апликација високих перформанси.