C++ vektor párov

C Vektor Parov



V C++ je vektor všestranný kontajner, ktorý dokáže dynamicky meniť svoju veľkosť, čo umožňuje efektívnu manipuláciu s prvkami. Zatiaľ čo pár je jednoduchý kontajner, ktorý môže obsahovať dva heterogénne objekty, čo poskytuje pohodlné prostriedky na priradenie a správu súvisiacich údajov. Keď sú tieto páry usporiadané do vektora, vývojári získajú schopnosť vytvárať dynamické kolekcie párov kľúč-hodnota alebo akúkoľvek inú kombináciu dvoch odlišných prvkov.

Táto dátová štruktúra je užitočná najmä v scenároch, kde musia byť prvky uložené ako páry, napríklad pri práci s pármi kľúč-hodnota alebo pri reprezentácii vzťahov medzi entitami. V tomto článku preskúmame koncept vektora párov v jazyku C++ a preskúmame rôzne príklady na ilustráciu jeho praktických aplikácií.







Príklad 1: Základné použitie: Iterácia cez vektor párov

Uvažujme o základnom príklade, kde vytvoríme vektor párov, ktoré predstavujú mená študentov a im zodpovedajúci vek. Iterácia cez vektor párov je podobná iterácii cez bežný vektor. Na získanie každého páru v rámci vektora je možné použiť buď iterátory alebo rozsahovo založené slučky „for“.



Tento príklad ukazuje syntax pre „vektor párov“ v zmysluplnom kontexte.



#include
#include
#include

int main ( ) {

std::vektor < std::pár < std::string, int >> studentData;

studentData.push_back ( std::make_pair ( 'Adam' , dvadsať ) ) ;
studentData.push_back ( std::make_pair ( 'Bill' , 22 ) ) ;
studentData.push_back ( std::make_pair ( 'Charlie' , dvadsaťjeden ) ) ;

std::cout << 'Údaje o študentovi: \n ' ;
pre ( const auto & študent : študentÚdaje ) {
std::cout << 'Názov: ' << študent.prvý << ', Vek: ' << študent.druhý << std::endl;
}

vrátiť 0 ;
}


V tomto úryvku kódu C++ začneme zahrnutím troch základných hlavičkových súborov: „ “ pre vstupné a výstupné operácie, „“ na využitie vektorového kontajnera a „“ na prístup k „std:: šablóna páru. Tieto hlavičky nám umožňujú využívať funkcie, ktoré sú nevyhnutné pre náš program.





Vpred, v rámci funkcie main() deklarujeme vektor s názvom „studentData“ pomocou kontajnera „std::vector“. Tento vektor je navrhnutý na uloženie párov, kde každý pár obsahuje meno študenta (reprezentované ako 'std::string') a jeho vek ('int' celé číslo). Potom vyplníme vektor „studentData“ tromi pármi. Pomocou funkcie „push_back“ sa na koniec vektora pridajú páry, čím sa dynamicky upraví jeho veľkosť. Slučka potom prechádza cez „studentData“, pričom extrahuje a vytlačí meno a vek každého študenta. Na výstupe sa zobrazí „Údaje študentov:“, ktoré zdôrazňujú štruktúrovanú reprezentáciu. Mená a vek študentov sú vytlačené oddelene, čím sú jasne prezentované uložené údaje.



Príklad 2: Triedenie vektora párov

Triedenie vektora párov je bežnou operáciou, najmä ak ide o asociácie kľúč-hodnota. Na tento účel možno použiť funkciu „std::sort“ z hlavičky „ “. Pozrime sa, ako zoradiť vektor párov na základe prvého a druhého prvku:

#include
#include
#include

int main ( ) {

std::vektor < std::pár < std::string, int >> Info;

info.push_back ( std::make_pair ( 'Peter' , pätnásť ) ) ;
info.push_back ( std::make_pair ( 'Dora' , 29 ) ) ;
info.push_back ( std::make_pair ( 'Hanna' , dvadsať ) ) ;

std::cout << 'Pôvodné informácie: \n ' ;
pre ( const auto & vstup: info ) {
std::cout << 'Názov: ' << vstup.prvý << ', Vek: ' << vstup.druhý << std::endl;
}


std::triediť ( info.začať ( ) , info.koniec ( ) ) ;

std::cout << ' \n Zoradené informácie: \n ' ;
pre ( const auto & vstup: info ) {
std::cout << 'Vek: ' << vstup.druhý << ', Názov: ' << vstup.prvý << std::endl;
}

vrátiť 0 ;
}


V tomto príklade kódu C++ pracujeme s vektorom párov na ukladanie a manipuláciu s údajmi týkajúcimi sa jednotlivcov, konkrétne s ich menami a vekom. Inicializujeme vektor s názvom „info o pároch“ v rámci funkcie main(). Následne tento vektor naplníme tromi pármi, z ktorých každý obsahuje meno a vek odlišnej osoby, pričom na efektívne vytváranie párov využívame funkciu „push_back“ a „std::make_pair“.

Do konzoly vydáme „Pôvodné informácie“. To zahŕňa iteráciu cez „informačný“ vektor a tlač komponentov každého páru. Potom použijeme algoritmus „std::sort“ na preusporiadanie vektora „info“ na základe predvoleného operátora porovnávania pre páry, ktorý porovnáva prvý prvok každého páru (v tomto prípade názvy). Po operácii triedenia opäť iterujeme cez upravený „informačný“ vektor vytlačením triedených informácií. Tentoraz výstup kladie dôraz na triedenie podľa veku, čo ilustruje výsledok procesu triedenia.

Príklad 3: Kombinovanie vektorov rôznych typov

Môžete sa stretnúť so situáciami, kedy musíte spojiť informácie z dvoch vektorov. Vektor párov môže pomôcť udržať asociáciu medzi prvkami z dvoch vektorov.

#include
#include

int main ( ) {
std::vektor < std::string > mestá = { 'New York' , 'Paríž' , 'Tokio' } ;
std::vektor < int > populácie = { 8175133 , 2140526 , 37435191 } ;

std::vektor < std::pár < std::string, int >> mestoPopuláciaPáry;

pre ( size_t i = 0 ; i < std::min ( mestá.veľkosť ( ) , populácie.veľkosť ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { Mestá [ i ] , populácie [ i ] } ) ;
}

std::cout << 'Páry mesto-populácia:' << std::endl;
pre ( const auto & pár : cityPopulationPairs ) {
std::cout << 'Mesto:' << pár.prvý << ', Populácia: ' << pár.druhý << std::endl;
}

vrátiť 0 ;
}


V „hlavnej“ funkcii kódu sú deklarované dva vektory: „mestá“ na uloženie názvov miest a „populácia“ na uloženie zodpovedajúcich hodnôt obyvateľstva.

Tretí vektor, „cityPopulationPairs“, je definovaný na ukladanie párov miest a ich príslušných populácií. Každý pár je „std::pair“, kde „std::string“ predstavuje názov mesta a „int“ predstavuje počet obyvateľov. Potom použijeme iteráciu slučky „for“ cez vektory (mestá a populácie) pomocou „std::min“, aby sme zabezpečili, že slučka nebude mať prístup k prvkom za menšou z dvoch veľkostí vektorov. Vo vnútri slučky sa vytvoria dvojice informácií o obyvateľstve mesta a pridajú sa k vektoru „cityPopulationPairs“.

Po skombinovaní informácií sa použije ďalší cyklus „for“ na iteráciu cez páry, ktoré sú uložené v „cityPopulationPairs“. Kombinované údaje sa potom zobrazia na štandardnom výstupe pomocou „std::cout“, čo jasne predstavuje každé mesto a jeho zodpovedajúcu populáciu.

Príklad 4: Nájdenie maximálnych a minimálnych hodnôt

Identifikácia minimálnych a maximálnych hodnôt v rámci súboru údajov je bežnou požiadavkou v algoritmických a štatistických operáciách. Na sledovanie maximálnych aj minimálnych hodnôt v sekvencii môžeme použiť vektor párov:

#include
#include
#include

int main ( ) {
std::vektor < int > čísla = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

std::vektor < std::pár < vy vy >> minMaxPairs;

std::triediť ( čísla.začať ( ) , čísla.koniec ( ) ) ;

minMaxPairs.push_back ( { čísla.predné ( ) , čísla.späť ( ) } ) ;

std::cout << 'Min-Max páry:' << std::endl;
pre ( const auto & pár: minMaxPairs ) {
std::cout << 'Min:' << pár.prvý << ', Max: ' << pár.druhý << std::endl;
}

vrátiť 0 ;
}


Poskytnutý kód C++ demonštruje proces hľadania minimálnych a maximálnych hodnôt vo vektore celých čísel a následného uloženia týchto hodnôt do vektora párov. Vektor s názvom „čísla“ je na začiatku deklarovaný a inicializovaný množinou celých čísel. Na efektívnu identifikáciu minimálnych a maximálnych hodnôt v súbore údajov program využíva funkciu „std::sort“ z knižnice algoritmov.

Cieľom tejto funkcie je usporiadať prvky vo vzostupnom poradí, čím sa zjednoduší proces identifikácie minimálnych aj maximálnych hodnôt v súbore údajov. Operácia triedenia sa aplikuje na vektor „čísla“ pomocou parametrov rozsahu numbers.begin() a numbers.end(). Po kroku triedenia program vytvorí vektor párov „minMaxPairs“ na uloženie vypočítaných minimálnych a maximálnych hodnôt. Funkcia „push_back“ sa potom použije na pridanie jedného páru, ktorý obsahuje prvý (minimum) a posledný (maximálny) prvok vektora zoradených čísel. Nakoniec program vypíše výsledok iteráciou cez vektor „minMaxPairs“ a zobrazí minimálne a maximálne hodnoty.

Záver

Na záver, vektor párov v jazyku C++ sa javí ako výkonná a flexibilná dátová štruktúra, ktorá pridáva k programovacím úlohám vrstvu všestrannosti. Prostredníctvom podrobného skúmania jeho syntaxe a praktických aplikácií sme videli, ako tento kontajner pomáha organizovať asociácie kľúč-hodnota, kombinovať informácie z rôznych vektorov a sledovať minimálne a maximálne hodnoty.