C++:ssa vektori on monipuolinen säiliö, joka voi muuttaa itsensä dynaamisesti kokoa, mikä mahdollistaa elementtien tehokkaan manipuloinnin. Vaikka pari on yksinkertainen säiliö, johon mahtuu kaksi heterogeenistä objektia, mikä tarjoaa kätevän tavan yhdistää ja hallita liittyviä tietoja. Kun nämä parit järjestetään vektorin sisällä, kehittäjät saavat mahdollisuuden luoda dynaamisia kokoelmia avainarvopareista tai minkä tahansa muun kahden erillisen elementin yhdistelmän.
Tämä tietorakenne on erityisen hyödyllinen skenaarioissa, joissa elementit on tallennettava pareina, kuten käsiteltäessä avain-arvo-pareja tai esitettäessä entiteettien välisiä suhteita. Tässä artikkelissa tutkimme parien C++-vektorin käsitettä ja tutkimme erilaisia esimerkkejä sen käytännön sovellusten havainnollistamiseksi.
Esimerkki 1: Peruskäyttö: Iterointi parivektorin yli
Tarkastellaanpa perusesimerkkiä, jossa luomme vektorin pareista, jotka edustavat oppilaiden nimiä ja niitä vastaavia ikäryhmiä. Parien vektorin iterointi on samanlaista kuin tavallisen vektorin iterointi. Voidaan käyttää joko iteraattoreita tai aluepohjaisia 'for'-silmukoita jokaisen vektorin sisällä olevan parin hakemiseen.
Tämä esimerkki esittelee 'parien vektorin' syntaksin merkityksellisessä kontekstissa.
#include
#sisällytä
#sisällytä
int main ( ) {
std::vektori < std::pair < std::string, int >> opiskelijatiedot;
opiskelijaData.push_back ( std::make_pair ( 'Adam' , kaksikymmentä ) ) ;
opiskelijaData.push_back ( std::make_pair ( 'Laskuttaa' , 22 ) ) ;
opiskelijaData.push_back ( std::make_pair ( 'Charlie' , kaksikymmentäyksi ) ) ;
std::cout << 'Opiskelijatiedot: \n ' ;
varten ( const auto & opiskelija : studentData ) {
std::cout << 'Nimi:' << opiskelija.ensin << ', Ikä: ' << opiskelija.toinen << std::endl;
}
palata 0 ;
}
Tässä C++-koodinpätkässä aloitamme lisäämällä kolme tärkeää otsikkotiedostoa: '
Eteenpäin main()-funktiossa julistamme vektorin nimeltä 'studentData' käyttämällä 'std::vector' -säiliötä. Tämä vektori on suunniteltu tallentamaan parit, joihin kukin pari kapseloi opiskelijan nimen (esitetty muodossa 'std::string') ja iän ('int' kokonaisluku). Sitten täytämme 'studentData'-vektorin kolmella parilla. 'Push_back'-funktiolla parit lisätään vektorin loppuun säätämällä sen kokoa dynaamisesti. Silmukka toistuu sitten 'studentDatan' läpi, poimimalla ja tulostaen jokaisen opiskelijan nimen ja iän. Tulosteessa näkyy 'Student Data:', joka korostaa jäsenneltyä esitystä. Opiskelijoiden nimet ja iät tulostetaan erikseen, jolloin tallennetut tiedot näkyvät selvästi.
Esimerkki 2: Parien vektorin lajittelu
Parivektorin lajittelu on yleinen toimenpide, varsinkin kun käsitellään avainarvo-assosiaatioita. '
#sisällytä
#include
int main ( ) {
std::vektori < std::pair < std::string, int >> tiedot;
info.push_back ( std::make_pair ( 'Peter' , viisitoista ) ) ;
info.push_back ( std::make_pair ( 'Dora' , 29 ) ) ;
info.push_back ( std::make_pair ( 'Hanna' , kaksikymmentä ) ) ;
std::cout << 'Alkuperäiset tiedot: \n ' ;
varten ( const auto & merkintä: info ) {
std::cout << 'Nimi:' << sisääntulo.ensimmäinen << ', Ikä: ' << merkintä.sekunti << std::endl;
}
std::sort ( info.begin ( ) , info.end ( ) ) ;
std::cout << ' \n Lajiteltu tieto: \n ' ;
varten ( const auto & merkintä: info ) {
std::cout << 'Ikä:' << merkintä.sekunti << ', Nimi: ' << sisääntulo.ensimmäinen << std::endl;
}
palata 0 ;
}
Tässä C++-koodiesimerkissä työskentelemme parien vektorin kanssa tallentaaksemme ja muokataksemme yksilöihin liittyviä tietoja, erityisesti heidän nimiään ja ikänsä. Alustamme vektorin nimeltä 'info of pairs' main()-funktiossa. Myöhemmin täytämme tämän vektorin kolmella parilla, joista jokainen sisältää erillisen henkilön nimen ja iän. Käytämme 'push_back'-funktiota ja 'std::make_pair' tehokkaaseen parien luomiseen.
Tulostamme 'Alkuperäiset tiedot' konsoliin. Tämä sisältää iteroinnin 'info'-vektorin läpi ja kunkin parin komponenttien tulostamisen. Sitten käytämme 'std::sort'-algoritmia järjestämään 'info'-vektoria uudelleen parien oletusvertailuoperaattorin perusteella, joka vertaa kunkin parin ensimmäistä elementtiä (tässä tapauksessa nimiä). Lajittelun jälkeen iteroidaan uudelleen muokatun 'info'-vektorin läpi tulostamalla lajitellut tiedot. Tällä kertaa tuotoksessa korostetaan ikäensijaista järjestystä havainnollistaen lajitteluprosessin tulosta.
Esimerkki 3: Eri tyyppisten vektorien yhdistäminen
Saatat kohdata tilanteita, joissa sinun on yhdistettävä kahden vektorin tiedot. Parien vektori voi auttaa ylläpitämään assosiaatiota näiden kahden vektorin elementtien välillä.
#include#sisällytä
int main ( ) {
std::vektori < std::string > kaupungit = { 'New York' , 'Pariisi' , 'Tokio' } ;
std::vektori < int > populaatiot = { 8175133 , 2140526 , 37435191 } ;
std::vektori < std::pair < std::string, int >> kaupunkiVäestöparit;
varten ( koko_t i = 0 ; i < std::min ( kaupungit.koko ( ) , populaatiot.koko ( ) ) ; ++i ) {
cityPopulationPairs.push_back ( { kaupungit [ i ] , populaatiot [ i ] } ) ;
}
std::cout << 'Kaupunki-asukas -parit:' << std::endl;
varten ( const auto & pari : kaupunkiPopulationPairs ) {
std::cout << 'Kaupunki:' << pari.ensin << ', Väestö: ' << pari.sekunti << std::endl;
}
palata 0 ;
}
Koodin 'pää'-funktiossa ilmoitetaan kaksi vektoria: 'kaupungit' tallentamaan kaupunkien nimet ja 'populaatiot' vastaavien väestöarvojen tallentamiseen.
Kolmas vektori, 'cityPopulationPairs', on määritelty tallentamaan kaupunkiparit ja niiden vastaavat populaatiot. Jokainen pari on 'std::pair
Tietojen yhdistämisen jälkeen toista 'for'-silmukkaa käytetään iteroimaan 'cityPopulationPairs' -kansioon tallennettujen parien läpi. Yhdistetyt tiedot näytetään sitten vakiotulosteessa käyttämällä 'std::cout', joka edustaa selvästi jokaista kaupunkia ja sitä vastaavaa väestöä.
Esimerkki 4: Maksimi- ja vähimmäisarvojen löytäminen
Tietojoukon minimi- ja maksimiarvojen tunnistaminen on yleinen vaatimus algoritmisissa ja tilastollisissa toimissa. Voimme käyttää parien vektoria seurataksemme sekä maksimi- että vähimmäisarvoja sarjassa:
#include#sisällytä
#include
int main ( ) {
std::vektori < int > numerot = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;
std::vektori < std::pair < sinä, sinä >> minMaxPairs;
std::sort ( numerot.alku ( ) , numbers.end ( ) ) ;
minMaxPairs.push_back ( { numerot.edessä ( ) , numerot.takaisin ( ) } ) ;
std::cout << 'Minimi-Max -parit:' << std::endl;
varten ( const auto & pari: minMaxPairs ) {
std::cout << 'Min:' << pari.ensin << ', Max: ' << pari.sekunti << std::endl;
}
palata 0 ;
}
Mukana oleva C++-koodi näyttää prosessin, jossa minimi- ja maksimiarvot löydetään kokonaislukuvektorista ja sitten tallennetaan nämä arvot parivektoriin. Vektori nimeltä 'luvut' ilmoitetaan aluksi ja alustetaan kokonaislukujoukolla. Tunnistaakseen tehokkaasti tietojoukon minimi- ja maksimiarvot ohjelma käyttää algoritmikirjaston 'std::sort'-funktiota.
Tämä toiminto pyrkii järjestämään elementit nousevaan järjestykseen, mikä yksinkertaistaa sekä minimi- että maksimiarvojen tunnistamisprosessia tietojoukossa. Lajittelutoimintoa sovelletaan 'numbers'-vektoriin käyttämällä numerot.begin() ja numbers.end() alueen parametreina. Lajitteluvaiheen jälkeen ohjelma luo parien vektorin, 'minMaxPairs', tallentaakseen lasketut minimi- ja maksimiarvot. 'Push_back'-funktiota käytetään sitten lisäämään yksi pari, joka sisältää lajiteltujen lukujen vektorin ensimmäisen (minimi) ja viimeisen (maksimi) elementin. Lopuksi ohjelma tulostaa tuloksen iteroimalla 'minMaxPairs'-vektorin läpi ja näyttämällä minimi- ja maksimiarvot.
Johtopäätös
Yhteenvetona voidaan todeta, että C++-parien vektori muodostuu tehokkaaksi ja joustavaksi tietorakenteeksi, joka lisää ohjelmointitehtäviin monipuolisuutta. Sen syntaksin ja käytännön sovellusten yksityiskohtaisen tutkimisen kautta olemme nähneet, kuinka tämä säilö auttaa järjestämään avainarvo-assosiaatioita, yhdistämään eri vektoreista peräisin olevat tiedot ja seuraamaan minimi- ja maksimiarvoja.