C++ pāru vektors

C Paru Vektors



C++ valodā vektors ir daudzpusīgs konteiners, kas var dinamiski mainīt izmērus, kas ļauj efektīvi manipulēt ar elementiem. Lai gan pāris ir vienkāršs konteiners, kurā var ievietot divus neviendabīgus objektus, kas nodrošina ērtu veidu saistīto datu asociēšanai un pārvaldībai. Kad šie pāri ir sakārtoti vektorā, izstrādātāji iegūst iespēju izveidot dinamiskas atslēgu un vērtību pāru kolekcijas vai jebkuru citu divu atšķirīgu elementu kombināciju.

Šī datu struktūra ir īpaši noderīga scenārijos, kur elementi ir jāuzglabā kā pāri, piemēram, strādājot ar atslēgu un vērtību pāriem vai attēlojot attiecības starp entītijām. Šajā rakstā mēs izpētīsim C++ pāru vektora jēdzienu un izpētīsim dažādus piemērus, lai ilustrētu tā praktisko pielietojumu.







1. piemērs. Pamata lietojums: atkārtošana pāru vektorā

Apskatīsim pamata piemēru, kur mēs izveidojam pāru vektoru, kas attēlo skolēnu vārdus un to atbilstošos vecumus. Iterācija pa pāru vektoru ir līdzīga iterācijai pa parastu vektoru. Var izmantot iteratorus vai diapazonā balstītas “for” cilpas, lai izgūtu katru pāri vektorā.



Šajā piemērā jēgpilnā kontekstā ir parādīta “pāru vektora” sintakse.



#include
#iekļaut
#include

int galvenais ( ) {

std::vektors < std::pair < std::string, int >> studentData;

studentData.push_back ( std::make_pair ( 'Ādams' , divdesmit ) ) ;
studentData.push_back ( std::make_pair ( 'Rēķins' , 22 ) ) ;
studentData.push_back ( std::make_pair ( 'Čārlijs' , divdesmitviens ) ) ;

std::cout << 'Studentu dati: \n ' ;
priekš ( const auto & students : studentsData ) {
std::cout << 'Vārds:' << students.pirmkārt << ', Vecums: ' << students.otrais << std::endl;
}

atgriezties 0 ;
}


Šajā C++ koda fragmentā mēs vispirms iekļaujam trīs būtiskus galvenes failus: “ ” ievades un izvades operācijām, “”, lai izmantotu vektora konteineru, un “”, lai piekļūtu “std:: pāris” veidni. Šīs galvenes ļauj mums izmantot funkcijas, kas ir būtiskas mūsu programmai.





Virzoties uz priekšu, funkcijā main() mēs deklarējam vektoru ar nosaukumu “studentData”, izmantojot konteineru “std::vector”. Šis vektors ir paredzēts, lai saglabātu pārus, kur katrā pārī ir ietverts skolēna vārds (attēlots kā “std::string”) un viņa vecums (“int” vesels skaitlis). Pēc tam mēs aizpildām vektoru “studentData” ar trim pāriem. Izmantojot funkciju “push_back”, vektora beigās tiek pievienoti pāri, dinamiski pielāgojot tā lielumu. Pēc tam cilpa atkārtojas caur “studentData”, izvelkot un izdrukājot katra skolēna vārdu un vecumu. Izvadā tiek parādīts “Studenta dati:”, kas uzsver strukturēto attēlojumu. Skolēnu vārdi un vecumi tiek drukāti atsevišķi, skaidri uzrādot saglabātos datus.



2. piemērs. Pāru vektora kārtošana

Pāru vektora kārtošana ir izplatīta darbība, īpaši, ja tiek risinātas atslēgu un vērtību asociācijas. Šim nolūkam var izmantot funkciju “std::sort” no galvenes “ ”. Apskatīsim, kā kārtot pāru vektoru, pamatojoties uz pirmo un otro elementu:

#include
#iekļaut
#include

int galvenais ( ) {

std::vektors < std::pair < std::string, int >> informācija;

info.push_back ( std::make_pair ( 'Pēteris' , piecpadsmit ) ) ;
info.push_back ( std::make_pair ( 'Dora' , 29 ) ) ;
info.push_back ( std::make_pair ( 'Hanna' , divdesmit ) ) ;

std::cout << 'Sākotnējā informācija: \n ' ;
priekš ( const auto & ieraksts: info ) {
std::cout << 'Vārds:' << ieraksts.pirmais << ', Vecums: ' << ieraksts.otrais << std::endl;
}


std::šķirot ( info.begin ( ) , info.beigas ( ) ) ;

std::cout << ' \n Sakārtota informācija: \n ' ;
priekš ( const auto & ieraksts: info ) {
std::cout << 'Vecums:' << ieraksts.otrais << ', Vārds: ' << ieraksts.pirmais << std::endl;
}

atgriezties 0 ;
}


Šajā C++ koda piemērā mēs strādājam ar pāru vektoru, lai saglabātu un apstrādātu datus, kas saistīti ar personām, īpaši viņu vārdiem un vecumu. Mēs inicializējam vektoru ar nosaukumu “info of pairs” funkcijā main (). Pēc tam mēs aizpildām šo vektoru ar trim pāriem, no kuriem katrs satur atsevišķas personas vārdu un vecumu, izmantojot funkciju “push_back” un “std::make_pair”, lai efektīvi izveidotu pārus.

Mēs izvadām “Sākotnējo informāciju” konsolei. Tas ietver atkārtošanu, izmantojot 'informācijas' vektoru, un katra pāra komponentu drukāšanu. Pēc tam mēs izmantojam “std::sort” algoritmu, lai pārkārtotu “info” vektoru, pamatojoties uz noklusējuma salīdzināšanas operatoru pāriem, kas salīdzina katra pāra pirmo elementu (šajā gadījumā nosaukumus). Pēc šķirošanas mēs vēlreiz atkārtojam modificēto “info” vektoru, izdrukājot sakārtoto informāciju. Šoreiz izlaidumā ir uzsvērta secība pēc vecuma, ilustrējot šķirošanas procesa rezultātu.

3. piemērs: Dažādu veidu vektoru apvienošana

Jūs varat saskarties ar dažām situācijām, kad jums ir jāapvieno informācija no diviem vektoriem. Pāru vektors var palīdzēt saglabāt saistību starp elementiem no diviem vektoriem.

#include
#iekļaut

int galvenais ( ) {
std::vektors < std::string > pilsētas = { 'Ņujorka' , 'Parīze' , 'Tokija' } ;
std::vektors < starpt > populācijas = { 8175133 , 2140526 , 37435191 } ;

std::vektors < std::pair < std::string, int >> pilsētaIedzīvotāju pāri;

priekš ( izmērs_t i = 0 ; i < std::min ( pilsētas.izmērs ( ) , populācijas.izmērs ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { pilsētas [ i ] , populācijas [ i ] } ) ;
}

std::cout << 'Pilsētu un iedzīvotāju pāri:' << std::endl;
priekš ( const auto & pāris: pilsētaIedzīvotājiPāri ) {
std::cout << 'Pilsēta:' << pāri.pirmais << ', Populācija: ' << pāris.otrais << std::endl;
}

atgriezties 0 ;
}


Koda “galvenajā” funkcijā tiek deklarēti divi vektori: “pilsētas”, lai saglabātu pilsētu nosaukumus, un “populācijas”, lai saglabātu atbilstošās iedzīvotāju vērtības.

Trešais vektors, “cityPopulationPairs”, ir definēts, lai saglabātu pilsētu pārus un to attiecīgās populācijas. Katrs pāris ir “std::pair”, kur “std::string” apzīmē pilsētas nosaukumu un “int” apzīmē iedzīvotāju skaitu. Pēc tam mēs izmantojam “for” cilpas iterāciju pār vektoriem (pilsētām un populācijām), izmantojot “std::min”, lai nodrošinātu, ka cilpa nepiekļūst elementiem, kas pārsniedz mazāko no diviem vektoru izmēriem. Cilpas iekšpusē tiek izveidoti pilsētu un iedzīvotāju informācijas pāri un pievienoti vektoram “cityPopulationPairs”.

Pēc informācijas apvienošanas tiek izmantota cita “for” cilpa, lai iterētu pa pāriem, kas ir saglabāti “cityPopulationPairs”. Pēc tam apvienotie dati tiek parādīti standarta izvadā, izmantojot “std::cout”, skaidri attēlojot katru pilsētu un tai atbilstošos iedzīvotājus.

4. piemērs. Maksimālās un minimālās vērtības atrašana

Minimālās un maksimālās vērtības noteikšana datu kopā ir izplatīta prasība algoritmiskajās un statistiskajās darbībās. Mēs varam izmantot pāru vektoru, lai sekotu gan maksimālajām, gan minimālajām vērtībām secībā:

#include
#iekļaut
#include

int galvenais ( ) {
std::vektors < starpt > cipari = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

std::vektors < std::pair < tu, tu >> minMaxPairs;

std::šķirot ( skaitļi.sākt ( ) , cipari.beigas ( ) ) ;

minMaxPairs.push_back ( { skaitļi.priekšpuse ( ) , cipari.atpakaļ ( ) } ) ;

std::cout << 'Minim-Max Pairs:' << std::endl;
priekš ( const auto & pāris: minMaxPairs ) {
std::cout << 'Min:' << pāri.pirmais << ', Maks.: ' << pāris.otrais << std::endl;
}

atgriezties 0 ;
}


Sniegtais C++ kods parāda minimālo un maksimālo vērtību atrašanas procesu veselu skaitļu vektorā un pēc tam šo vērtību saglabāšanu pāru vektorā. Vektors ar nosaukumu “skaitļi” sākotnēji tiek deklarēts un inicializēts ar veselu skaitļu kopu. Lai efektīvi identificētu minimālās un maksimālās vērtības datu kopā, programma izmanto funkciju “std::sort” no algoritmu bibliotēkas.

Šīs funkcijas mērķis ir sakārtot elementus augošā secībā, vienkāršojot gan minimālās, gan maksimālās vērtības noteikšanas procesu datu kopā. Kārtošanas darbība tiek piemērota vektoram 'skaitļi', kā diapazona parametrus izmantojot numbers.begin() un numbers.end(). Pēc kārtošanas posma programma izveido pāru vektoru “minMaxPairs”, lai saglabātu aprēķinātās minimālās un maksimālās vērtības. Pēc tam tiek izmantota funkcija “push_back”, lai pievienotu vienu pāri, kas satur sakārtoto skaitļu vektora pirmo (minimālo) un pēdējo (maksimālo) elementus. Visbeidzot, programma izvada rezultātu, atkārtojot vektoru “minMaxPairs” un parādot minimālās un maksimālās vērtības.

Secinājums

Visbeidzot, C++ pāru vektors parādās kā jaudīga un elastīga datu struktūra, pievienojot programmēšanas uzdevumiem daudzpusības slāni. Detalizēti izpētot tā sintakse un praktisko pielietojumu, mēs esam redzējuši, kā šis konteiners palīdz organizēt atslēgu un vērtību asociācijas, apvienot informāciju no dažādiem vektoriem un izsekot minimālajām un maksimālajām vērtībām.