C++ porų vektorius

C Poru Vektorius



C++ kalboje vektorius yra universalus konteineris, galintis dinamiškai keisti dydį, o tai leidžia efektyviai valdyti elementus. Nors pora yra paprastas konteineris, kuriame gali būti du nevienalyčiai objektai, o tai yra patogi priemonė susieti ir valdyti susijusius duomenis. Kai šios poros yra suskirstytos į vektorių, kūrėjai įgyja galimybę kurti dinamines raktų ir verčių porų kolekcijas arba bet kokį kitą dviejų skirtingų elementų derinį.

Ši duomenų struktūra ypač naudinga tais atvejais, kai elementai turi būti saugomi kaip poros, pavyzdžiui, kai kalbama apie raktų ir reikšmių poras arba vaizduojant ryšius tarp objektų. Šiame straipsnyje mes išnagrinėsime C++ porų vektoriaus sąvoką ir išnagrinėsime įvairius pavyzdžius, iliustruodami jo praktinį pritaikymą.







1 pavyzdys: Pagrindinis naudojimas: kartojimas per porų vektorių

Panagrinėkime pagrindinį pavyzdį, kai sukuriame porų vektorių, vaizduojančių mokinių vardus ir atitinkamus jų amžius. Iteravimas per porų vektorių yra panašus į kartojimą per įprastą vektorių. Norint gauti kiekvieną vektoriaus porą, galima naudoti iteratorius arba diapazonu pagrįstas „for“ kilpas.



Šiame pavyzdyje rodoma „porų vektoriaus“ sintaksė prasmingame kontekste.



#include
#įtraukti
#include

tarp pagrindinis ( ) {

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

studentData.push_back ( std::make_pair ( 'Adomas' , dvidešimt ) ) ;
studentData.push_back ( std::make_pair ( 'Bill' , 22 ) ) ;
studentData.push_back ( std::make_pair ( 'Čarlis' , dvidešimt vienas ) ) ;

std::cout << 'Studentų duomenys: \n ;
dėl ( const auto & studentas: studentData ) {
std::cout << 'Vardas: ' << studentas.pirma << ', Amžius: ' << studentas.antrasis << std::endl;
}

grąžinti 0 ;
}


Šiame C++ kodo fragmente pirmiausia įtraukiame tris pagrindinius antraštės failus: „ “ įvesties ir išvesties operacijoms, „“, kad būtų naudojamas vektorių konteineris, ir „“, kad pasiektumėte „std:: pora“ šabloną. Šios antraštės leidžia mums naudoti funkcijas, kurios yra būtinos mūsų programai.





Judėdami į priekį, funkcijoje main () mes deklaruojame vektorių pavadinimu „studentData“, naudodami konteinerį „std::vector“. Šis vektorius skirtas saugoti poras, kuriose kiekvienoje poroje yra mokinio vardas (pavaizduotas kaip 'std::string') ir jų amžius (sveikasis skaičius 'int'. Tada vektorių „studentData“ užpildome trimis poromis. Naudojant funkciją „push_back“, poros pridedamos prie vektoriaus galo, dinamiškai koreguojant jo dydį. Tada ciklas kartojasi per „studentData“, išgaunant ir išspausdinant kiekvieno mokinio vardą ir amžių. Išvestyje rodoma „Studentų duomenys:“, kuri pabrėžia struktūrinį vaizdavimą. Mokinių vardai ir amžius spausdinami atskirai, aiškiai pateikiant saugomus duomenis.



2 pavyzdys: Porų vektoriaus rūšiavimas

Porų vektoriaus rūšiavimas yra įprasta operacija, ypač kai kalbama apie raktų ir reikšmių asociacijas. Šiuo tikslu galima naudoti funkciją „std::sort“ iš „ “ antraštės. Pažiūrėkime, kaip rūšiuoti porų vektorių pagal pirmąjį ir antrąjį elementus:

#include
#įtraukti
#include

tarp pagrindinis ( ) {

std::vektorius < std::pair < std::string, int >> informacija;

info.push_back ( std::make_pair ( 'Petras' , penkiolika ) ) ;
info.push_back ( std::make_pair ( 'Dora' , 29 ) ) ;
info.push_back ( std::make_pair ( 'Hanna' , dvidešimt ) ) ;

std::cout << 'Pradinė informacija: \n ;
dėl ( const auto & įrašas: info ) {
std::cout << 'Vardas: ' << įėjimas.pirma << ', Amžius: ' << įrašas.antra << std::endl;
}


std::rūšiuoti ( info.begin ( ) , info.pabaiga ( ) ) ;

std::cout << \n Surūšiuota informacija: \n ;
dėl ( const auto & įrašas: info ) {
std::cout << 'Amžius:' << įrašas.antra << ', Vardas: ' << įėjimas.pirma << std::endl;
}

grąžinti 0 ;
}


Šiame C++ kodo pavyzdyje dirbame su porų vektoriumi, kad saugotume ir tvarkytume duomenis, susijusius su asmenimis, ypač jų vardus ir amžių. Mes inicijuojame vektorių, pavadintą „porų informacija“ pagrindinėje () funkcijoje. Vėliau šį vektorių užpildome trimis poromis, kurių kiekvienoje yra atskiro asmens vardas ir pavardė ir amžius, naudojant „push_back“ ir „std::make_pair“ funkciją, kad būtų galima efektyviai sukurti poras.

Išvedame „Pradinę informaciją“ į konsolę. Tai apima kartojimą per „informacijos“ vektorių ir kiekvienos poros komponentų spausdinimą. Tada mes naudojame „std::sort“ algoritmą, kad pertvarkytume „info“ vektorių pagal numatytąjį porų palyginimo operatorių, kuris lygina pirmąjį kiekvienos poros elementą (šiuo atveju pavadinimus). Atlikę rūšiavimo operaciją, vėl kartojame pakeistą „informacijos“ vektorių, spausdindami surūšiuotą informaciją. Šį kartą išvestyje akcentuojamas rūšiavimas pagal amžių, iliustruojantis rūšiavimo proceso rezultatą.

3 pavyzdys: Įvairių tipų vektorių derinimas

Galite susidurti su kai kuriomis situacijomis, kai turite sujungti informaciją iš dviejų vektorių. Porų vektorius gali padėti išlaikyti ryšį tarp elementų iš dviejų vektorių.

#include
#įtraukti

tarp pagrindinis ( ) {
std::vektorius < std::string > miestai = { 'Niujorkas' , 'Paryžius' , 'Tokijas' } ;
std::vektorius < tarpt > populiacijos = { 8175133 , 2140526 , 37435191 } ;

std::vektorius < std::pair < std::string, int >> miestasGyventojų poros;

dėl ( dydis_t i = 0 ; i < std::min ( miestai.dydis ( ) , populiacijos.dydis ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { miestai [ i ] , populiacijos [ i ] } ) ;
}

std::cout << Miesto ir gyventojų poros: << std::endl;
dėl ( const auto & pora : miestasGyventojų poros ) {
std::cout << 'Miestas:' << pora.pirma << ', Gyventojų skaičius: ' << pora.antra << std::endl;
}

grąžinti 0 ;
}


Kodo „pagrindinėje“ funkcijoje deklaruojami du vektoriai: „miestai“ miestų pavadinimams saugoti ir „populiacijos“, kad būtų saugomos atitinkamos populiacijos reikšmės.

Trečiasis vektorius, „cityPopulationPairs“, yra apibrėžtas miestų poroms ir jų atitinkamoms populiacijoms saugoti. Kiekviena pora yra „std::pair“, kur „std::string“ reiškia miesto pavadinimą, o „int“ – gyventojų skaičių. Tada naudojame „for“ ciklo iteraciją per vektorius (miestus ir populiacijas), naudodami „std::min“, kad užtikrintume, jog ciklas nepasiektų elementų, didesnių nei mažesnio iš dviejų vektorių dydžių. Ciklo viduje sukuriamos miesto ir gyventojų informacijos poros ir pridedamos prie vektoriaus „cityPopulationPairs“.

Sujungus informaciją, kita „for“ kilpa naudojama kartoti poras, kurios yra saugomos „cityPopulationPairs“. Tada kombinuoti duomenys rodomi standartinėje išvestyje naudojant „std::cout“, aiškiai nurodant kiekvieną miestą ir atitinkamą gyventojų skaičių.

4 pavyzdys: Didžiausios ir minimalios reikšmių radimas

Mažiausių ir didžiausių verčių nustatymas duomenų rinkinyje yra įprastas algoritminių ir statistinių operacijų reikalavimas. Galime naudoti porų vektorių, kad galėtume sekti didžiausias ir mažiausias reikšmes sekoje:

#include
#įtraukti
#include

tarp pagrindinis ( ) {
std::vektorius < tarpt > skaičiai = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

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

std::rūšiuoti ( skaičiai.pradėti ( ) , skaičiai.pabaiga ( ) ) ;

minMaxPairs.push_back ( { skaičiai.priekyje ( ) , skaičiai.atgal ( ) } ) ;

std::cout << 'Min-Max Pairs:' << std::endl;
dėl ( const auto & pora: minMaxPairs ) {
std::cout << 'Min.:' << pora.pirma << ', Max: ' << pora.antra << std::endl;
}

grąžinti 0 ;
}


Pateiktas C++ kodas parodo, kaip reikia rasti mažiausią ir didžiausią reikšmių sveikųjų skaičių vektoriuje ir tada saugoti šias reikšmes porų vektoriuje. Vektorius, pavadintas „skaičiais“, iš pradžių deklaruojamas ir inicijuojamas sveikųjų skaičių rinkiniu. Kad efektyviai nustatytų minimalias ir didžiausias duomenų rinkinio vertes, programa naudoja funkciją „std::sort“ iš algoritmų bibliotekos.

Šia funkcija siekiama išdėstyti elementus didėjančia tvarka, supaprastinant tiek minimalių, tiek didžiausių duomenų rinkinio verčių nustatymo procesą. Rūšiavimo operacija taikoma „numerių“ vektoriui naudojant numeriai.begin() ir numbers.end() kaip diapazono parametrus. Atlikus rūšiavimo etapą, programa sukuria porų vektorių „minMaxPairs“, kad išsaugotų apskaičiuotas minimalias ir didžiausias reikšmes. Tada funkcija „push_back“ naudojama norint pridėti vieną porą, kurioje yra surūšiuotų skaičių vektoriaus pirmasis (minimalus) ir paskutinis (maksimalus) elementai. Galiausiai programa išveda rezultatą, kartodama vektorių „minMaxPairs“ ir rodydama mažiausią ir didžiausią reikšmes.

Išvada

Apibendrinant, C++ porų vektorius pasirodo kaip galinga ir lanksti duomenų struktūra, suteikianti programavimo užduotims universalumo. Išsamiai ištyrę jo sintaksę ir praktinius pritaikymus, pamatėme, kaip šis konteineris padeda organizuoti raktų ir reikšmių asociacijas, sujungti informaciją iš skirtingų vektorių ir sekti minimalias bei didžiausias reikšmes.