Spárovať v knižnici štandardných šablón C++ (STL)
Pár sa používa na spojenie dvoch hodnôt, ktoré môžu mať rôzne typy údajov. Pár poskytuje spôsob, ako uložiť dva heterogénne objekty ako jeden celok. V zásade sa používa, ak chceme ukladať n-tice. Párový kontajner je jednoduchý kontajner definovaný v hlavička pozostávajúca z dvoch dátových prvkov alebo objektov.
- Prvý prvok sa označuje ako „prvý“ a druhý prvok ako „druhý“ a poradie je pevné (prvý, druhý).
- Pár je možné priradiť, kopírovať a porovnávať. Pole objektov alokovaných v a mapa alebo hash_map je štandardne typu „pair“, v ktorom sú všetky „prvé“ prvky jedinečné kľúče spojené s ich „druhými“ hodnotovými objektmi.
- Na prístup k prvkom používame názov premennej, za ktorým nasleduje bodkový operátor, za ktorým nasleduje kľúčové slovo prvý alebo druhý.
Syntax:
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;> }> |
Výkon
100 G
Inicializácia páru: Môžeme tiež inicializovať pár.
Syntax:
pair Pair_name (value1, value2) ;
Rôzne spôsoby inicializácie páru:
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
Ďalším spôsobom, ako inicializovať pár, je použitie funkcie make_pair().
g2 = make_pair(1, 'a');
Ďalšia platná syntax na deklarovanie páru je:
g2 = {1, 'a'}; CPP
// 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; }> |
Výkon
GeeksForGeeks 1.23
Poznámka: Ak sa neinicializuje, automaticky sa inicializuje prvá hodnota z páru.
C++
// CPP program to illustrate> // auto-initializing of pair STL> #include> #include> using> namespace> std;> int> main()> {> > pair <> int> ,> double> >PAIR1;> > pairchar>PAIR2; // inicializuje sa na 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; }> |
Výkon:
00
funkcie členov
1) make_pair() : Táto funkcia šablóny umožňuje vytvoriť pár hodnôt bez explicitného písania typov.
Syntax:
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.first = 100; PAIR1.second = 'G'; PAIR3 = make_pair('GeeksForGeeks is Best', 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; }> |
Výkon
100 G GeeksForGeeks 1.23 GeeksForGeeks is Best 4.56
2) výmena: Táto funkcia zamieňa obsah jedného párového objektu s obsahom iného párového objektu. Páry musia byť rovnakého typu.
Syntax:
pair1.swap(pair2) ;
Pre dva dané páry, povedzme pár1 a pár2 rovnakého typu, funkcia swap vymení pár1.prvý za pár2.prvý a pár1.sekundu za pár2.sekundu.
CPP
// CPP Program to demonstrate swap()> // function in pair> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> > pair <> char> ,> int> >pair1 = make_pair(> 'A'> , 1);> > pair <> char> ,> int> >pair2 = 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;> }> |
Výkon
Before swapping: Contents of pair1 = A 1Contents of pair2 = B 2 After swapping: Contents of pair1 = B 2Contents of pair2 = A 1
3) kravata(): Táto funkcia funguje rovnako ako v tuples . Vytvára n-ticu odkazov lvalue na svoje argumenty, t. j. na rozbalenie n-tice (alebo tu pár) hodnôt do samostatných premenných. Rovnako ako v niciach, aj tu sú dva varianty kravaty, s ignorovaním a bez neho. ignorovať kľúčové slovo ignoruje konkrétny prvok n-tice pred rozbalením.
Avšak n-tice môžu mať viacero argumentov, ale páry majú iba dva argumenty. Takže v prípade párov je potrebné rozbaľovanie vyslovene riešiť.
Syntax:
tie(int &, int &) = pair1;
CPP
// CPP code to illustrate tie() in Pair> #include> using> namespace> std;> // Driver Code> int> main()> {> > pair <> int> ,> int> >pár1 = { 1, 2 };> > int> a, b;> > tie(a, b) = pair1;> > cout < < a < <> ' '> < < b < <> '
'> ;> > pair <> int> ,> int> >pár2 = { 3, 4 };> > tie(a, ignore) = pair2;> > // prints old value of b> > cout < < a < <> ' '> < < b < <> '
'> ;> > // Illustrating pair of pairs> > pair <> int> , pair <> int> ,> char> >> pair3 = { 3, { 4,> 'a'> } };> > 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.> |
Výkon
1 2 3 2 3 4 a
Kód na ilustráciu funkcií v páre:
CPP
// CPP program to illustrate pair in STL> #include> #include> #include> using> namespace> std;> int> main()> {> > pairint>g1; pairint> g2('Kvíz', 3); pairint> g3(g2); pár |
Výkon
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
Časová zložitosť: O(1).
Pomocný priestor: O(1).
operátory (=, ==, !=,>=, <=) v páre
Môžeme použiť aj operátory s pármi.
1) pomocou equal(=): Priradí nový objekt pre párový objekt. Syntax:
pair& operator= (const pair& pr);
Toto priradí pr ako nový obsah pre objekt páru. Prvej hodnote je priradená prvá hodnota pr a druhej hodnote je priradená druhá hodnota pr.
2) Operátor porovnania (==) s párom: Pre dva dané páry, povedzme pár1 a pár2, porovnávací operátor porovná prvú hodnotu a druhú hodnotu týchto dvoch párov, t.j. či pár1.prvý sa rovná pár2.prvý alebo nie a či sa pár1.sekunda rovná pár2.sekunda alebo nie .
tj. ak ( (par1.prvý ==pár2.prvý) && (pár1.sekunda==pár2.sekunda) )
Ak je niektorá z týchto dvoch podmienok nepravdivá, vráti hodnotu false, inak platí.
3) Nerovnaký (!=) operátor s párom: Pre dané dva páry, povedzme pár1 a pár2, operátor != porovnáva prvé hodnoty týchto dvoch párov, t. j. ak sa pár1.prvý rovná páru2.prvý alebo nie, ak sú rovnaké, skontroluje druhé hodnoty oboch.
4) Logické (>=, <= )operátory s párom: Pre dané dva páry povedzme pár1 a pár2, =,>, možno použiť aj s pármi. Vráti 0 alebo 1 iba porovnaním prvej hodnoty páru. Pre dvojice ako p1=(1,20) a p2=(1,10) p2
&list=PLqM7alHXFySGg6GSRmE2INI4k8fPH5qVB