C++ Rūšiuoti porų vektorių

C Rusiuoti Poru Vektoriu



C++ suteikia galimybę rodyti porų vektorių ir rūšiuoti porų vektorius. C++ kalboje yra konteineris, kuriame yra dvi viena su kita susietos reikšmės, vadinamos „pora“ ir „porų vektorius“, kuris yra vektorius, kuriame yra daug šių porų. Rūšiavimas – tai duomenų išdėstymas didėjančia arba mažėjančia tvarka pagal reikalavimus. Čia sužinosime, kaip rūšiuoti porų vektorius programuojant C++. Porų vektorius galime rūšiuoti tiek „didėjančia“, tiek „mažėjančia“ tvarka C++. Mes galime lengvai rūšiuoti porų vektorių naudodami „rūšiavimo ()“ metodą. Padarykime keletą kodų, kad surūšiuotume porų vektorių.

1 pavyzdys:

Pradėkime kodą įtraukdami čia antraštės failą, kuris yra „bits/stdc++.h“. Turėdami šį antraštės failą, mums nebereikia įtraukti daugiau antraštės failų, nes jame yra visos reikalingos bibliotekos. Tada pridedame vardų erdvę „std“ ir iškviečiame funkciją „main()“.







Dabar paskelbiame „porų vektorių“, pavadintą „my_vect“, ir įvedame duomenų tipą „int“, kad šiose porose įvesti duomenys būtų sveikojo skaičiaus duomenų tipas. Žemiau mes inicijuojame du masyvus pavadinimais „mano_arr1[]“ ir „mano_arr2[]“. Čia mes inicijuojame pirmąją ir antrąją porų reikšmes šiomis masyvo reikšmėmis. Tada mes naudojame „for“ kilpą, kad įvestume šias reikšmes į porų vektorių. Čia mes naudojame funkciją „push_back()“, kuri padeda įterpti reikšmes vektoriaus pabaigoje. Šios funkcijos viduje įdedame parinktį „make_pair“, kuri naudojama dviejų „my_arr1“ ir „my_arr2“ reikšmių poros objektui sukurti.



Po to mes spausdiname porų vektorių, vėl naudodami „for“ kilpą. Čia pridedami „pirmasis“ ir „antrasis“ raktiniai žodžiai, norint gauti pirmąją ir antrąją porų vektoriaus reikšmes. Tai spausdina porų vektorių čia nerūšiuojant. Dabar mes naudojame funkciją „rūšiuoti ()“, kad surūšiuotume porų vektorių. Čia funkcijos „begin ()“ ir „end ()“ naudojamos, kai porų vektoriaus pradžia ir pabaiga perduodama šiai funkcijai „rūšiuoti ()“.



Po rūšiavimo dar kartą spausdiname porų vektorių naudodami „cout“, o pirmąjį ir antrąjį raktažodžius įdedame į „mano_vec[i]“. Dabar čia taip pat atspausdintas surūšiuotas porų vektorius.





1 kodas:

#include

naudojant vardų sritį std;

tarp pagrindinis ( )

{

vektorius < pora < tu, tu > > mano_vektas;

int my_arr1 [ ] = { 49 , dvidešimt , penkiolika , 56 } ;

int my_arr2 [ ] = { 37 , dvidešimt , 90 , 55 } ;

int num = dydisof ( mano_arr1 ) / dydis ( mano_arr1 [ 0 ] ) ;

dėl ( tarpt i = 0 ; i < ar i++ )

my_vect.push_back ( make_pair ( mano_arr1 [ i ] ,mano_arr2 [ i ] ) ) ;

cout << 'Prieš rūšiuojant porų vektorių:' << endl;

dėl ( tarpt i = 0 ; i < ar i++ )

{

cout << mano_vekt [ i ] .Pirmas << ' '

<< mano_vekt [ i ] .antra << endl;

}

rūšiuoti ( my_vect.begin ( ) , my_vect.end ( ) ) ;

cout << \n Surūšiavus porų vektorių: ' << endl ;

dėl ( tarpt i = 0 ; i < ar i++ )

{

cout << mano_vekt [ i ] .Pirmas << ' '

<< mano_vekt [ i ] .antra << endl;

}

grąžinti 0 ;

}



Išvestis:

Pirmiausia rodomas porų vektorius prieš rūšiavimą. Tada šiam porų vektoriui taikome rūšiavimo techniką. Tada čia taip pat rodomas surūšiuotas porų vektorius. Matome, kad porų vektorius rūšiuojamas didėjančia tvarka pagal pirmąjį poros elementą.

2 pavyzdys:

Šiame pavyzdyje dabar sukuriame „porų vektorių“, vadinamą vektoriumi_1, ir priskiriame duomenų tipą „int“, o tai reiškia, kad informacija, kurią įvedame į šias poras, yra „sveiko skaičiaus“ duomenų tipo. Du masyvai su pavadinimais „first_arr[]“ ir „second_arr[]“ inicijuojami toliau. Čia inicijuojame šių masyvų reikšmes pirmosios ir antrosios porų reikšmėms.

Tada mes įvedame šias reikšmes į porų vektorių, naudodami kilpą „for“. Parinktis „make_pair“, kuri naudojama dviejų reikšmių poros objektui sugeneruoti iš „first_arr[]“ ir „second_arr[]“ masyvų, yra įtraukta į metodą „push_back()“, kuris padeda įterpti elementus į vektoriaus pabaiga.

Tada dar kartą naudojame „for“ kilpą, kad išvestume porų vektorių. Norint gauti pirmąją ir antrąją porų vektoriaus reikšmes, įterpiami „pirmasis“ ir „antrasis“ raktiniai žodžiai. Tai išveda poros vektorių be jokio rūšiavimo šiuo metu. Dabar rūšiuojame „porų vektorių“ naudodami funkciją „rūšiuoti ()“ mažėjančia tvarka. Šioje funkcijoje įdedame funkcijas „rbegin()“ ir „rend()“, kad ji pakeistų rūšiavimą ir pradėtų nuo poros reikšmių pabaigos. Jis išdėsto juos mažėjančia tvarka.

Po rūšiavimo naudojame „cout“, kad išvestume porų vektorių, dar kartą panaudoję „for“ kilpą, į „cout“ įterpdami pirmąjį ir antrąjį raktažodžius su „vector_1[i]“. Čia taip pat spausdinamas porų surūšiuotas vektorius.

2 kodas:

#include

naudojant vardų sritį std;

tarp pagrindinis ( )

{

vektorius < pora < tu, tu > > vektorius_1;

int first_arr [ ] = { 77 , 29 , 97 , penkiolika } ;

int second_arr [ ] = { 35 , 89 , 64 , 25 } ;

int s = dydisof ( pirmasis_arr ) / dydis ( pirmasis_arr [ 0 ] ) ;

dėl ( int i = 0 ; i < s; i++ )

vektorius_1.push_back ( make_pair ( pirmasis_arr [ i ] , antras_arr [ i ] ) ) ;

cout << 'Prieš rūšiavimą:' << endl;

dėl ( int i = 0 ; i < s; i++ ) {

cout << vektorius_1 [ i ] .Pirmas << ' ' << vektorius_1 [ i ] .antra

<< endl;

}

rūšiuoti ( vektorius_1.rbegin ( ) , vektorius_1.rend ( ) ) ;

cout << endl << 'Po rūšiavimo:' << endl;

dėl ( int i = 0 ; i < s; i++ ) {

cout << vektorius_1 [ i ] .Pirmas << ' ' << vektorius_1 [ i ] .antra

<< endl;

}

grąžinti 0 ;

}

Išvestis:

Pirmiausia čia rodomas porų išankstinio rūšiavimo vektorius, po to porų surūšiuotas vektorius, kuris taip pat rodomas čia po to, kai jam taikomas rūšiavimo procesas. Kaip matome, kiekvienos poros pradinis elementas nustato, kaip porų vektorius rūšiuojamas mažėjančia tvarka.

3 pavyzdys:

Čia sukuriame „bool“ tipo funkciją, pavadintą „sortBySecElement“, kad surūšiuotume vektorių skaičius. Šioje funkcijoje pateikiame sąlygą „reikšmė1.sekundė < vertė2.sekundė“, kuri lygina abiejų porų vektorių antrąsias reikšmes ir grąžina skaičius.

Tada „main()“ iškviečiamas toliau, kur sukuriame porų vektorių. Toliau inicijuojami du masyvai, pavadinti „naujas_masyvas1[]“ ir „naujas_masyvas2[]“. Čia mes įterpiame šių masyvų porų reikšmes. Toliau mes naudojame „for“ kilpą, kad įvestume šias reikšmes į porų vektorių. Metodo „push_back()“, kuris padeda įterpti elementus vektoriaus pabaigoje, viduje yra parinktis „make_pair“, kuri naudojama dviejų reikšmių poros objektui sukurti iš „new_array1[]“ ir „new_array2[ ]“ masyvus.

Tada mes išvedame porų vektorių naudodami kitą 'for' kilpą. „Pirmasis“ ir „antrasis“ raktiniai žodžiai įterpiami norint gauti pirmąją ir antrąją porų vektoriaus reikšmes. Šiame etape rūšiavimas neatliekamas, o poros vektorius išvedamas. Dabar rūšiavimui naudojame funkciją „rūšiuoti ()“. Porų vektoriaus pradžia ir pabaiga šiuo atveju pateikiami funkcijai „rūšiuoti()“, naudojant „begin()“ ir „end()“ funkcijas. Taip pat funkciją „sortBySecElement“, kurią anksčiau sukūrėme, įdedame į šią funkciją „rūšiuoti()“, kur nustatome porų rūšiavimo vektoriaus modelį iš antrojo vektoriaus elemento didėjančia tvarka.

Dabar vėl naudojame „for“ kilpą. Tada pirmasis ir antrasis raktiniai žodžiai įterpiami su 'new_vec[i]' į 'cout', kad po rūšiavimo vėl būtų sukurtas porų vektorius. Čia taip pat spausdinamas porų surūšiuotas vektorius didėjančia tvarka.

3 kodas:

#include

naudojant vardų sritį std;

bool sortBySecElement ( const pora < tu, tu > & vertė1,

const pora < tu, tu > & vertė2 )

{

grąžinti ( vertė1.sekundė < vertė2.sekundė ) ;

}

tarp pagrindinis ( )

{

vektorius < pora < tu, tu > > naujas_daiktas

int naujas_arr1 [ ] = { 3. 4 , 29 , 65 , 48 } ;

int naujas_arr2 [ ] = { 67 , 19 , 54 , 7 } ;

int reikšmė = dydisof ( naujas_arr1 ) / dydis ( naujas_arr1 [ 0 ] ) ;

dėl ( tarpt i = 0 ; i < vertė; i++ )

new_vec.push_back ( make_pair ( naujas_arr1 [ i ] ,naujas_arr2 [ i ] ) ) ;

cout << 'Prieš rūšiavimą:' << endl ;

dėl ( tarpt i = 0 ; i < vertė; i++ )

{

cout << naujas_daiktas [ i ] .Pirmas << ' '

<< naujas_daiktas [ i ] .antra << endl;

}

rūšiuoti ( new_vec.begin ( ) , new_vec.end ( ) , RūšiuotiBySecElement ) ;

cout << endl << 'Po rūšiavimo:' << endl ;

dėl ( tarpt i = 0 ; i < vertė; i++ )

{

cout << naujas_daiktas [ i ] .Pirmas << ' '

<< naujas_daiktas [ i ] .antra << endl;

}

grąžinti 0 ;

}

Išvestis:

Čia rodomas surūšiuotas porų vektorius, o rūšiavimas atliekamas pagal antrąsias porų reikšmes. Antrasis porų elementas saugomas didėjančia tvarka ir rodomas čia.

Išvada

Šis vadovas yra apie „porų rūšiavimo vektorių“ C++. Ištyrėme „porų vektorių“ nerūšiuodami, taip pat rūšiuodami „porų vektorių“ didėjančia ir mažėjančia tvarka. Tai iliustravome pavyzdžiais, kuriuose „porų vektorius“ rūšiuojame pagal pirmąjį ir antrąjį šių porų skaičius programuojant C++. Sužinojome, kad „rūšiavimo()“ metodas padeda atlikti šį rūšiavimą.