Pora naudojama sujungti dvi reikšmes, kurios gali būti skirtingų duomenų tipų. Pair suteikia galimybę laikyti du nevienalyčius objektus kaip vieną vienetą. Jis iš esmės naudojamas, jei norime saugoti korteles. Porinis konteineris yra paprastas konteineris, apibrėžtas antraštė, susidedanti iš dviejų duomenų elementų arba objektų.
- Pirmasis elementas nurodomas kaip „pirmas“, o antrasis – kaip „antrasis“, o tvarka yra fiksuota (pirmas, antras).
- Porą galima priskirti, kopijuoti ir palyginti. Objektų masyvas, priskirtas a žemėlapis arba hash_map pagal numatytuosius nustatymus yra „pair“ tipo, kuriame visi „pirmieji“ elementai yra unikalūs raktai, susieti su jų „antrosios“ vertės objektais.
- Norėdami pasiekti elementus, naudojame kintamojo pavadinimą, po kurio eina taško operatorius, po kurio eina raktinis žodis pirmas arba antras.
Sintaksė:
pair Pair_name>
CPP
// CPP program to illustrate Pair in STL> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >// defining a pair> >pair<>int>,>char>>PAIR1;> >// first part of the pair> >PAIR1.first = 100;> >// second part of the pair> >PAIR1.second =>'G'>;> >cout << PAIR1.first <<>' '>;> >cout << PAIR1.second << endl;> >return> 0;> }> |
>
>Išvestis
100 G>
Poros inicijavimas: Taip pat galime inicijuoti porą.
Sintaksė:
pair Pair_name (value1, value2) ;>
Įvairūs poros inicijavimo būdai:
pair g1; //default pair g2(1, 'a'); //initialized, different data type pair g3(1, 10); //initialized, same data type pair g4(g3); //copy of g3>
Kitas būdas inicijuoti porą yra naudoti funkciją make_pair().
g2 = make_pair(1, 'a');>
Kita tinkama sintaksė porai deklaruoti yra:
g2 = {1, 'a'};> CPP
kiek miestų yra JAV
// CPP program to illustrate> // Initializing of pair STL> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >// defining a pair> >pairdouble>PAIR2('GeeksForGeeks', 1.23); cout<< PAIR2.first << ' '; cout << PAIR2.second << endl; return 0; }> |
>
>Išvestis
GeeksForGeeks 1.23>
Pastaba: Jei ji nėra inicijuojama, pirmoji poros reikšmė inicijuojama automatiškai.
alfa-beta genėjimas
C++
// CPP program to illustrate> // auto-initializing of pair STL> #include> #include> using> namespace> std;> int> main()> {> >pair<>int>,>double>>PAIR1;> >pairchar>PAIR2; // ji inicijuojama į 0 cout<< PAIR1.first; // it is initialised to 0 cout << PAIR1.second; cout << ' '; // // it prints nothing i.e NULL cout << PAIR2.first; // it prints nothing i.e NULL cout << PAIR2.second; return 0; }> |
>
>
Išvestis:
00>
Narių funkcijos
1) make_pair () : Ši šablono funkcija leidžia sukurti reikšmių porą aiškiai neįrašant tipų.
Sintaksė:
Pair_name = make_pair (value1,value2);>
CPP
// CPP Program to demonstrate make_pair()> // function in pair> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>int>,>char>>PAIR1;> >pairdouble>PAIR2('GeeksForGeeks', 1.23); pairdouble> PAIR3; PAIR1.pirmas = 100; PAIR1.second = 'G'; PAIR3 = make_pair ('GeeksForGeeks yra geriausias', 4.56); cout<< PAIR1.first << ' '; cout << PAIR1.second << endl; cout << PAIR2.first << ' '; cout << PAIR2.second << endl; cout << PAIR3.first << ' '; cout << PAIR3.second << endl; return 0; }> |
>
>Išvestis
100 G GeeksForGeeks 1.23 GeeksForGeeks is Best 4.56>
2) apsikeitimas: Ši funkcija sukeičia vienos poros objekto turinį su kitos poros objekto turiniu. Poros turi būti to paties tipo.
Sintaksė:
string json java
pair1.swap(pair2) ;>
Dviejų porų, tarkime, to paties tipo pora1 ir pora2, apsikeitimo funkcija sukeis porą1.first su pair2.first ir pair1.second su pair2.second.
CPP
// CPP Program to demonstrate swap()> // function in pair> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>char>,>int>>pora1 = make_pair(>'A'>, 1);> >pair<>char>,>int>>pora2 = make_pair(>'B'>, 2);> >cout <<>'Before swapping:
'>;> >cout <<>'Contents of pair1 = '> << pair1.first <<>' '> ><< pair1.second;> >cout <<>'Contents of pair2 = '> << pair2.first <<>' '> ><< pair2.second;> >pair1.swap(pair2);> >cout <<>'
After swapping:
'>;> >cout <<>'Contents of pair1 = '> << pair1.first <<>' '> ><< pair1.second;> >cout <<>'Contents of pair2 = '> << pair2.first <<>' '> ><< pair2.second;> >return> 0;> }> |
>
>Išvestis
Before swapping: Contents of pair1 = A 1Contents of pair2 = B 2 After swapping: Contents of pair1 = B 2Contents of pair2 = A 1>
3) lygiosios(): Ši funkcija veikia taip pat kaip ir korteles . Jis sukuria lvvalučių nuorodų eilutę į savo argumentus, t. y. išpakuoja eilutę (arba čia porą) į atskirus kintamuosius. Kaip ir koreliuose, čia taip pat yra du kaklaraiščio variantai su ignoravimu ir be jo. ignore raktažodis nepaiso konkretaus eilutės elemento išpakavimo.
Tačiau kortelės gali turėti kelis argumentus, bet poros turi tik du argumentus. Taigi, porų porų atveju išpakavimas turi būti aiškiai tvarkomas.
Sintaksė:
tie(int &, int &) = pair1;>
CPP
// CPP code to illustrate tie() in Pair> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>int>,>int>>pora1 = { 1, 2 };> >int> a, b;> >tie(a, b) = pair1;> >cout << a <<>' '> << b <<>'
'>;> >pair<>int>,>int>>pora2 = { 3, 4 };> >tie(a, ignore) = pair2;> >// prints old value of b> >cout << a <<>' '> << b <<>'
'>;> >// Illustrating pair of pairs> >pair<>int>, pair<>int>,>char>>> pora3 = { 3, { 4,>> } };> >int> x, y;> >char> z;> >// tie(x,y,z) = pair3; Gives compilation error> >// tie(x, tie(y,z)) = pair3; Gives compilation error> >// Each pair needs to be explicitly handled> >tie(x,ignore) = pair3;> >tie(y, z) = pair3.second;> >cout << x <<>' '> << y <<>' '> << z <<>'
'>;> }> // contributed by sarthak_eddy.> |
>
>Išvestis
1 2 3 2 3 4 a>
Kodas, iliustruojantis funkcijas poroje:
CPP
// CPP program to illustrate pair in STL> #include> #include> #include> using> namespace> std;> int> main()> {> >pairint>g1; pairint> g2('Viktorina', 3); pora> g3(g2); pora |
>
>Išvestis
This is pair g1 with value Geeks. This is pair g3 with value QuizThis pair was initialized as a copy of pair g2 This is pair g2 with value .com The values of this pair were changed after initialization. This is pair g4 with values 5 and 10 made for showing addition. The sum of the values in this pair is 15. We can concatenate the values of the pairs g1, g2 and g3 : GeeksQuiz.com We can also swap pairs (but type of pairs should be same) : Before swapping, g1 has Geeks and g2 has .com After swapping, g1 has .com and g2 has Geeks>
Laiko sudėtingumas: O(1).
Pagalbinė erdvė: O(1).
operatoriai (=, ==, !=,>=, <=) poroje
Galime naudoti operatorius ir su poromis.
1) naudojant lygybę (=): Jis priskiria naują objektą poriniam objektui. Sintaksė:
js nustatymo laikas
pair& operator= (const pair& pr);>
Tai priskiria pr kaip naują poros objekto turinį. Pirmajai reikšmei priskiriama pirmoji pr reikšmė, o antrajai reikšmei priskiriama antroji pr reikšmė.
2) Palyginimas (==) operatorius su pora: Dviejų nurodytų porų, tarkime pair1 ir pair2, palyginimo operatorius lygina pirmąją ir antrąją tų dviejų porų reikšmes, t. y. jei pair1.first yra lygi pora2.pirma ar ne, o jei pora1.second yra lygi pora2.sekundė ar ne .
y., jei ( (pari1.first ==pair2.first) && (pair1.second==pair2.second) )
Jei kuri nors iš dviejų sąlygų yra klaidinga, ji grąžina klaidingą, kitaip teisinga.
3) Nelygus (!=) operatorius su pora: Duotose dviejose porose, tarkime, pair1 ir pair2, operatorius != lygina pirmąsias tų dviejų porų reikšmes, t. y. jei pair1.first yra lygi pora2.pirmasis arba ne, jei jos yra lygios, tada patikrina antrąsias abiejų reikšmes.
4) Loginiai(>=, <= )operatoriai su pora: Pateiktoms dviem poroms tarkim pair1 ir pair2, =,>, taip pat gali būti naudojamas su poromis. Jis grąžina 0 arba 1 lygindamas tik pirmąją poros reikšmę. Tokioms poroms kaip p1=(1,20) ir p2=(1,10) p2
&list=PLqM7alHXFySGg6GSRME2INI4k8fPH5qVB