Ц++ вектор парова

C Vektor Parova



У Ц++, вектор је свестран контејнер који може динамички променити величину што омогућава ефикасну манипулацију елементима. Док је пар једноставан контејнер који може да држи два хетерогена објекта који пружа погодно средство за повезивање и управљање повезаним подацима. Када су ови парови организовани унутар вектора, програмери добијају могућност да креирају динамичке колекције парова кључ-вредност или било коју другу комбинацију два различита елемента.

Ова структура података је посебно корисна у сценаријима у којима се елементи морају чувати као парови, као што је када се ради о паровима кључ/вредност или представљају односе између ентитета. У овом чланку ћемо истражити концепт Ц++ вектора парова и истражити различите примере да бисмо илустровали његове практичне примене.







Пример 1: Основна употреба: Итерација преко вектора парова

Хајде да размотримо основни пример где креирамо вектор парова који представљају имена ученика и њихов одговарајући узраст. Итерација преко вектора парова је слична понављању преко регуларног вектора. Може се користити или итераторе или петље „фор“ засноване на опсегу да би се пронашао сваки пар унутар вектора.



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



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

инт маин ( ) {

стд::вецтор < стд::паир < стд::стринг, инт >> студентДата;

студентДата.пусх_бацк ( стд::маке_паир ( 'Адам' , двадесет ) ) ;
студентДата.пусх_бацк ( стд::маке_паир ( 'рачун' , 22 ) ) ;
студентДата.пусх_бацк ( стд::маке_паир ( 'Чарли' , двадесет један ) ) ;

стд::цоут << „Подаци о студентима: ' ;
за ( цонст ауто & студент : студентДата ) {
стд::цоут << 'Име: ' << студент.први << ', Старост: ' << ученик.други << стд::ендл;
}

повратак 0 ;
}


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





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



Пример 2: Сортирање вектора парова

Сортирање вектора парова је уобичајена операција, посебно када се ради о асоцијацијама кључ-вредност. У ту сврху се може користити функција „стд::сорт” из заглавља „<алгоритам>”. Хајде да видимо како да сортирамо вектор парова на основу првог и другог елемента:

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

инт маин ( ) {

стд::вецтор < стд::паир < стд::стринг, инт >> инфо;

инфо.пусх_бацк ( стд::маке_паир ( 'Петар' , петнаест ) ) ;
инфо.пусх_бацк ( стд::маке_паир ( 'Дора' , 29 ) ) ;
инфо.пусх_бацк ( стд::маке_паир ( 'Хана' , двадесет ) ) ;

стд::цоут << „Оригиналне информације: ' ;
за ( цонст ауто & унос: инфо ) {
стд::цоут << 'Име: ' << улазак.први << ', Старост: ' << унос.други << стд::ендл;
}


стд::сорт ( инфо.бегин ( ) , инфо.енд ( ) ) ;

стд::цоут << ' Сортиране информације: ' ;
за ( цонст ауто & унос: инфо ) {
стд::цоут << 'Старост:' << унос.други << ', Име: ' << улазак.први << стд::ендл;
}

повратак 0 ;
}


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

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

Пример 3: Комбиновање вектора различитих типова

Можда ћете наићи на ситуације у којима морате комбиновати информације из два вектора. Вектор парова може помоћи у одржавању везе између елемената из два вектора.

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

инт маин ( ) {
стд::вецтор < стд::стринг > градови = { 'Њу Јорк' , 'Париз' , 'Токио' } ;
стд::вецтор < инт > популације = { 8175133 , 2140526 , 37435191 } ;

стд::вецтор < стд::паир < стд::стринг, инт >> цитиПопулатионПаирс;

за ( величина_т и = 0 ; и < стд::мин ( градова.величина ( ) , популације.величина ( ) ) ; ++и ) {
цитиПопулатионПаирс.пусх_бацк ( { градова [ и ] , популације [ и ] } ) ;
}

стд::цоут << „Парови град-становништво:“ << стд::ендл;
за ( цонст ауто & пар : цитиПопулатионПаирс ) {
стд::цоут << 'Град:' << пар.први << ', Популација: ' << пар.други << стд::ендл;
}

повратак 0 ;
}


У „главној“ функцији кода, два вектора су декларисана: „градови“ за чување имена градова и „становништво“ за чување одговарајућих вредности становништва.

Трећи вектор, „цитиПопулатионПаирс“, дефинисан је за чување парова градова и њихових одговарајућих популација. Сваки пар је „стд::паир<стд::стринг, инт>” где „стд::стринг” представља име града, а „инт” представља становништво. Затим користимо итерацију петље „фор“ преко вектора (градова и становништва) користећи „стд::мин“ да бисмо осигурали да петља не приступа елементима изван мањих од две величине вектора. Унутар петље, парови информација о граду и становништву се креирају и додају вектору „цитиПопулатионПаирс“.

Након комбиновања информација, друга „фор“ петља се користи за понављање кроз парове који су ускладиштени у „цитиПопулатионПаирс“. Комбиновани подаци се затим приказују на стандардном излазу користећи „стд::цоут“, јасно представљајући сваки град и његову одговарајућу популацију.

Пример 4: Проналажење максималне и минималне вредности

Идентификовање минималних и максималних вредности унутар скупа података је уобичајен захтев у алгоритамским и статистичким операцијама. Можемо користити вектор парова да бисмо пратили и максималне и минималне вредности у низу:

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

инт маин ( ) {
стд::вецтор < инт > бројеви = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

стд::вецтор < стд::паир < ти, ти >> минМакПаирс;

стд::сорт ( бројеви.почети ( ) , бројеви.крај ( ) ) ;

минМакПаирс.пусх_бацк ( { бројеви.предњи ( ) , бројеви.назад ( ) } ) ;

стд::цоут << 'Мин-Мак парови:' << стд::ендл;
за ( цонст ауто & пар : минМакПаирс ) {
стд::цоут << 'Мин: ' << пар.први << ', Макс: ' << пар.други << стд::ендл;
}

повратак 0 ;
}


Обезбеђени Ц++ код показује процес проналажења минималне и максималне вредности у вектору целих бројева, а затим чување ових вредности у вектору парова. Вектор под називом „бројеви“ је првобитно декларисан и иницијализован скупом целих бројева. Да би ефикасно идентификовао минималне и максималне вредности у скупу података, програм користи функцију „стд::сорт“ из библиотеке алгоритама.

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

Закључак

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