C++ keeles on vektor mitmekülgne konteiner, mis suudab enda suurust dünaamiliselt muuta, mis võimaldab elementidega tõhusalt manipuleerida. Kuigi paar on lihtne konteiner, mis mahutab kahte heterogeenset objekti, mis pakub mugavat vahendit seotud andmete seostamiseks ja haldamiseks. Kui need paarid on korraldatud vektoris, saavad arendajad võimaluse luua võtme-väärtuste paaride dünaamilisi kogusid või mis tahes muud kahe erineva elemendi kombinatsiooni.
See andmestruktuur on eriti kasulik stsenaariumide puhul, kus elemente tuleb salvestada paaridena, näiteks võtme-väärtuste paaride käsitlemisel või olemite vaheliste suhete esitamisel. Selles artiklis uurime paaride C++ vektori kontseptsiooni ja uurime erinevaid näiteid selle praktiliste rakenduste illustreerimiseks.
Näide 1: Põhikasutus: itereerimine paaride vektoriga
Vaatleme põhinäidet, kus loome paaride vektori, mis esindab õpilaste nimesid ja nende vastavaid vanuseid. Paaride vektori itereerimine on sarnane tavalise vektori itereerimisega. Iga paari vektoris leidmiseks võib kasutada kas iteraatoreid või vahemikupõhiseid 'for' silmuseid.
See näide tutvustab 'paaride vektori' süntaksit tähendusrikkas kontekstis.
#include
#include
#include
int main ( ) {
std::vektor < std::pair < std::string, int >> üliõpilasandmed;
studentData.push_back ( std::make_pair ( 'Adam' , kakskümmend ) ) ;
studentData.push_back ( std::make_pair ( 'Arve' , 22 ) ) ;
studentData.push_back ( std::make_pair ( 'Charlie' , kakskümmend üks ) ) ;
std::cout << 'Õpilaste andmed: \n ' ;
jaoks ( const auto & õpilane : studentData ) {
std::cout << 'Nimi:' << üliõpilane.kõigepealt << ', Vanus: ' << õpilane.teine << std::endl;
}
tagasi 0 ;
}
Sellesse C++ koodilõiku lisame alustuseks kolm olulist päisefaili: '
Edasi liikudes deklareerime funktsiooni main() sees vektori nimega 'studentData', kasutades konteinerit 'std::vector'. See vektor on loodud paaride salvestamiseks, kus iga paar sisaldab õpilase nime (esitatud kui 'std::string') ja tema vanust ('int' täisarv). Seejärel täidame vektori „studentData” kolme paariga. Funktsiooni 'push_back' abil lisatakse paarid vektori lõppu, kohandades dünaamiliselt selle suurust. Seejärel itereerub tsükkel läbi „studentData”, eraldades ja printides iga õpilase nime ja vanuse. Väljundis kuvatakse „Õpilaste andmed:”, mis rõhutab struktureeritud esitust. Õpilaste nimed ja vanused trükitakse eraldi, esitades selgelt salvestatud andmed.
Näide 2: Paaride vektori sortimine
Paaride vektori sortimine on tavaline toiming, eriti võtme-väärtuste seoste käsitlemisel. Selleks saab kasutada päises „
#include
#include
int main ( ) {
std::vektor < std::pair < std::string, int >> info;
info.push_back ( std::make_pair ( 'Peeter' , viisteist ) ) ;
info.push_back ( std::make_pair ( 'Dora' , 29 ) ) ;
info.push_back ( std::make_pair ( 'Hanna' , kakskümmend ) ) ;
std::cout << 'Algne teave: \n ' ;
jaoks ( const auto & sissekanne: info ) {
std::cout << 'Nimi:' << sisenemine.esimene << ', Vanus: ' << sissekanne.teine << std::endl;
}
std::sort ( info.begin ( ) , info.end ( ) ) ;
std::cout << ' \n Sorteeritud teave: \n ' ;
jaoks ( const auto & sissekanne: info ) {
std::cout << 'Vanus:' << sissekanne.teine << ', nimi: ' << sisenemine.esimene << std::endl;
}
tagasi 0 ;
}
Selles C++ koodinäites töötame me paaride vektoriga, et salvestada ja töödelda üksikisikutega seotud andmeid, täpsemalt nende nimesid ja vanust. Initsialiseerime vektori nimega 'info of pairs' funktsiooni main() sees. Seejärel täidame selle vektori kolme paariga, millest igaüks sisaldab konkreetse isiku nime ja vanust, kasutades tõhusaks paaride loomiseks funktsiooni 'push_back' ja 'std::make_pair'.
Väljastame konsooli 'Algne teave'. See hõlmab infovektori itereerimist ja iga paari komponentide printimist. Seejärel kasutame 'std::sort' algoritmi, et korraldada 'info' vektor ümber paaride vaikevõrdlusoperaatori alusel, mis võrdleb iga paari esimest elementi (antud juhul nimesid). Pärast sortimistoimingut itereerime uuesti läbi muudetud 'info' vektori, trükkides sorteeritud teabe. Seekord rõhutatakse väljundis vanusepõhist järjestamist, illustreerides sorteerimisprotsessi tulemust.
Näide 3: Erinevat tüüpi vektorite kombineerimine
Teil võib tekkida olukordi, kus peate ühendama teabe kahest vektorist. Paaride vektor võib aidata säilitada seost kahe vektori elementide vahel.
#include#include
int main ( ) {
std::vektor < std::string > linnad = { 'New York' , 'Pariis' , 'Tokyo' } ;
std::vektor < int > populatsioonid = { 8175133 , 2140526 , 37435191 } ;
std::vektor < std::pair < std::string, int >> linn Rahvastikupaarid;
jaoks ( suurus_t i = 0 ; i < std::min ( linnad.suurus ( ) , populatsioonid.suurus ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { linnad [ i ] , populatsioonid [ i ] } ) ;
}
std::cout << 'Linna ja rahvastiku paarid:' << std::endl;
jaoks ( const auto & paar : linn Rahvastikupaarid ) {
std::cout << 'Linn:' << paar.esimene << ', Rahvaarv: ' << paar.teine << std::endl;
}
tagasi 0 ;
}
Koodi põhifunktsioonis deklareeritakse kaks vektorit: linnad linnanimede salvestamiseks ja populatsioonid vastavate populatsiooni väärtuste salvestamiseks.
Kolmas vektor, 'cityPopulationPairs', on määratletud linnade paaride ja nende vastavate populatsioonide salvestamiseks. Iga paar on 'std::pair
Pärast teabe kombineerimist kasutatakse teist 'for' tsüklit, et itereerida läbi 'cityPopulationPairs' salvestatud paaride. Kombineeritud andmed kuvatakse seejärel standardväljundis, kasutades 'std::cout', mis näitab selgelt iga linna ja selle vastavat elanikkonda.
Näide 4: Maksimaalse ja minimaalse väärtuse leidmine
Minimaalsete ja maksimaalsete väärtuste tuvastamine andmekogumis on algoritmiliste ja statistiliste toimingute puhul tavaline nõue. Saame kasutada paaride vektorit, et jälgida nii jada maksimaalseid kui ka minimaalseid väärtusi:
#include#include
#include
int main ( ) {
std::vektor < int > numbrid = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;
std::vektor < std::pair < sina, sina >> minMaxPairs;
std::sort ( numbrid.algus ( ) , numbrid.lõpp ( ) ) ;
minMaxPairs.push_back ( { numbrid.ees ( ) , numbrid.tagasi ( ) } ) ;
std::cout << 'Min-Max paarid:' << std::endl;
jaoks ( const auto & paar: minMaxPairs ) {
std::cout << 'Min:' << paar.esimene << ', Max: ' << paar.teine << std::endl;
}
tagasi 0 ;
}
Esitatud C++ kood demonstreerib täisarvude vektorist minimaalsete ja maksimaalsete väärtuste leidmise protsessi ning seejärel nende väärtuste salvestamist paaride vektorisse. Vektor nimega 'numbrid' deklareeritakse algselt ja initsialiseeritakse täisarvude komplektiga. Andmestiku minimaalse ja maksimaalse väärtuse tõhusaks tuvastamiseks kasutab programm algoritmi teegi funktsiooni 'std::sort'.
Selle funktsiooni eesmärk on korraldada elemendid kasvavas järjekorras, lihtsustades nii minimaalse kui ka maksimaalse väärtuse tuvastamist andmekogus. Sorteerimistoimingut rakendatakse 'numbrite' vektorile, kasutades vahemiku parameetritena numbers.begin() ja numbers.end(). Pärast sortimisetappi loob programm paaride vektori 'minMaxPairs', et salvestada arvutatud miinimum- ja maksimumväärtused. Funktsiooni 'tagasitõuke' kasutatakse seejärel ühe paari lisamiseks, mis sisaldab sorditud numbrite vektori esimest (minimaalne) ja viimane (maksimaalne) elementi. Lõpuks väljastab programm tulemuse, itereerides läbi 'minMaxPairs' vektori ja kuvades minimaalse ja maksimaalse väärtuse.
Järeldus
Kokkuvõttes tuleb paaride C++ vektor esile võimsa ja paindliku andmestruktuurina, mis lisab programmeerimisülesannetele mitmekülgsuse kihi. Selle süntaksi ja praktiliste rakenduste üksikasjaliku uurimise kaudu oleme näinud, kuidas see konteiner aitab korraldada võtme-väärtuste seoseid, kombineerida erinevatest vektoritest pärinevat teavet ning jälgida minimaalseid ja maksimaalseid väärtusi.