C++ vektor párů

C Vektor Paru



V C++ je vektor všestranným kontejnerem, který může dynamicky měnit svou velikost, což umožňuje efektivní manipulaci s prvky. Zatímco pár je jednoduchý kontejner, který pojme dva heterogenní objekty, což poskytuje pohodlné prostředky pro sdružování a správu souvisejících dat. Když jsou tyto páry uspořádány do vektoru, získají vývojáři možnost vytvářet dynamické kolekce párů klíč-hodnota nebo jakoukoli jinou kombinaci dvou odlišných prvků.

Tato datová struktura je užitečná zejména ve scénářích, kde musí být prvky uloženy jako páry, například když se jedná o páry klíč-hodnota nebo představují vztahy mezi entitami. V tomto článku prozkoumáme koncept C++ vektoru párů a prozkoumáme různé příklady, které ilustrují jeho praktické aplikace.







Příklad 1: Základní použití: Iterace přes vektor párů

Podívejme se na základní příklad, kdy vytvoříme vektor dvojic, které představují jména studentů a jejich odpovídající věk. Iterace přes vektor párů je podobná iteraci přes běžný vektor. K získání každého páru ve vektoru lze použít buď iterátory, nebo rozsahově založené smyčky „for“.



Tento příklad ukazuje syntaxi pro „vektor párů“ ve smysluplném kontextu.



#include
#include
#include

int main ( ) {

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

studentData.push_back ( std::make_pair ( 'Adam' , dvacet ) ) ;
studentData.push_back ( std::make_pair ( 'Účtovat' , 22 ) ) ;
studentData.push_back ( std::make_pair ( 'Kája' , dvacet jedna ) ) ;

std::cout << 'Údaje o studentech: \n ' ;
pro ( const auto & student : studentData ) {
std::cout << 'Název: ' << student.první << ', věk: ' << student.druhý << std::endl;
}

vrátit se 0 ;
}


V tomto úryvku kódu C++ začneme zahrnutím tří základních souborů záhlaví: „ “ pro vstupní a výstupní operace, „“ pro použití vektorového kontejneru a „“ pro přístup k „std:: šablona páru. Tyto hlavičky nám umožňují používat funkce, které jsou nezbytné pro náš program.





Vpřed ve funkci main() deklarujeme vektor s názvem „studentData“ pomocí kontejneru „std::vector“. Tento vektor je navržen tak, aby ukládal páry, kde každý pár zapouzdřuje jméno studenta (reprezentované jako „std::string“) a jeho věk („int“ celé číslo). Poté naplníme vektor „studentData“ třemi páry. Pomocí funkce „push_back“ se na konec vektoru přidají páry a dynamicky se upraví jeho velikost. Smyčka pak prochází „studentData“ a extrahuje a tiskne jméno a věk každého studenta. Na výstupu se zobrazí „Data studentů:“, která zdůrazňuje strukturovanou reprezentaci. Jména a věk studentů jsou vytištěny samostatně a jasně prezentují uložená data.



Příklad 2: Třídění vektoru párů

Řazení vektoru párů je běžná operace, zejména při práci s asociacemi klíč-hodnota. K tomuto účelu lze použít funkci „std::sort“ z hlavičky „ “. Podívejme se, jak seřadit vektor párů na základě první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 ( 'Petr' , patnáct ) ) ;
info.push_back ( std::make_pair ( 'Dora' , 29 ) ) ;
info.push_back ( std::make_pair ( 'Hanna' , dvacet ) ) ;

std::cout << 'Původní informace: \n ' ;
pro ( const auto & vstup: info ) {
std::cout << 'Název: ' << vstup.první << ', věk: ' << vstup.druhý << std::endl;
}


std::řadit ( info.začátek ( ) , info.konec ( ) ) ;

std::cout << ' \n Seřazené informace: \n ' ;
pro ( const auto & vstup: info ) {
std::cout << 'Věk:' << vstup.druhý << ', Název: ' << vstup.první << std::endl;
}

vrátit se 0 ;
}


V tomto příkladu kódu C++ pracujeme s vektorem párů pro ukládání a manipulaci s daty souvisejícími s jednotlivci, konkrétně s jejich jmény a věkem. Ve funkci main() inicializujeme vektor s názvem „info o párech“. Následně naplníme tento vektor třemi páry, z nichž každý obsahuje jméno a věk odlišné osoby, přičemž využíváme funkce „push_back“ a „std::make_pair“ pro efektivní vytvoření páru.

Do konzole vypíšeme „Original Information“. To zahrnuje iteraci přes „informační“ vektor a tisk komponent každého páru. Poté použijeme algoritmus „std::sort“ k přeuspořádání vektoru „info“ na základě výchozího operátoru porovnání pro páry, který porovnává první prvek každého páru (v tomto případě jména). Po operaci třídění znovu iterujeme upraveným „informačním“ vektorem vytištěním setříděných informací. Výstup tentokrát klade důraz na řazení podle věku a ilustruje výsledek procesu třídění.

Příklad 3: Kombinace vektorů různých typů

Můžete se setkat se situacemi, kdy musíte zkombinovat informace ze dvou vektorů. Vektor párů může pomoci udržet spojení mezi prvky ze dvou vektorů.

#include
#include

int main ( ) {
std::vektor < std::string > města = { 'New York' , 'Paříž' , 'Tokio' } ;
std::vektor < int > populace = { 8175133 , 2140526 , 37435191 } ;

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

pro ( velikost_t i = 0 ; i < std::min ( města.velikost ( ) , populace.velikost ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { města [ i ] , populace [ i ] } ) ;
}

std::cout << 'Páry město-populace:' << std::endl;
pro ( const auto & pár : cityPopulationPairs ) {
std::cout << 'Město:' << pár.první << ', Populace: ' << pár.druhý << std::endl;
}

vrátit se 0 ;
}


Ve funkci „hlavní“ kódu jsou deklarovány dva vektory: „města“ pro uložení názvů měst a „populace“ pro uložení odpovídajících hodnot populace.

Třetí vektor, „cityPopulationPairs“, je definován pro ukládání dvojic měst a jejich příslušných populací. Každý pár je „std::pair“, kde „std::string“ představuje název města a „int“ představuje počet obyvatel. Potom použijeme iteraci smyčky „for“ přes vektory (města a populace) pomocí „std::min“, abychom zajistili, že smyčka nebude přistupovat k prvkům za menší ze dvou velikostí vektorů. Uvnitř smyčky se vytvoří dvojice informací o obyvatelstvu města a připojí se k vektoru „cityPopulationPairs“.

Po zkombinování informací se použije další smyčka „for“ k iteraci párů, které jsou uloženy v „cityPopulationPairs“. Kombinovaná data jsou pak zobrazena na standardním výstupu pomocí „std::cout“, což jasně představuje každé město a jeho odpovídající populaci.

Příklad 4: Zjištění maximální a minimální hodnoty

Identifikace minimální a maximální hodnoty v rámci souboru dat je běžným požadavkem v algoritmických a statistických operacích. Můžeme použít vektor párů ke sledování maximálních i minimálních hodnot v sekvenci:

#include
#include
#include

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

std::vektor < std::pár < ty, ty >> minMaxPairs;

std::řadit ( čísla.začátek ( ) , čísla.konec ( ) ) ;

minMaxPairs.push_back ( { čísla.přední ( ) , čísla.zpět ( ) } ) ;

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

vrátit se 0 ;
}


Poskytnutý kód C++ demonstruje proces nalezení minimální a maximální hodnoty ve vektoru celých čísel a následného uložení těchto hodnot do vektoru párů. Vektor s názvem „čísla“ je zpočátku deklarován a inicializován sadou celých čísel. Pro efektivní identifikaci minimální a maximální hodnoty v datové sadě využívá program funkci „std::sort“ z knihovny algoritmů.

Tato funkce si klade za cíl uspořádat prvky ve vzestupném pořadí, což zjednodušuje proces identifikace minimálních i maximálních hodnot v datové sadě. Operace řazení se aplikuje na vektor „čísla“ pomocí čísel.begin() a numbers.end() jako parametrů rozsahu. Po kroku třídění program vytvoří vektor párů, „minMaxPairs“, pro uložení vypočtených minimálních a maximálních hodnot. Funkce „push_back“ se pak použije k přidání jednoho páru, který obsahuje první (minimum) a poslední (maximální) prvek vektoru seřazených čísel. Nakonec program vydá výsledek iterací přes vektor „minMaxPairs“ a zobrazením minimálních a maximálních hodnot.

Závěr

Závěrem lze říci, že vektor párů C++ se ukazuje jako výkonná a flexibilní datová struktura, která přidává k programovacím úlohám vrstvu všestrannosti. Prostřednictvím podrobného zkoumání jeho syntaxe a praktických aplikací jsme viděli, jak tento kontejner pomáhá organizovat asociace klíč-hodnota, kombinovat informace z různých vektorů a sledovat minimální a maximální hodnoty.