logo

Spárovat v C++ Standard Template Library (STL)

Pár se používá ke spojení dvou hodnot, které mohou mít různé datové typy. Pár poskytuje způsob, jak uložit dva heterogenní objekty jako jednu jednotku. V zásadě se používá, pokud chceme ukládat n-tice. Párový kontejner je jednoduchý kontejner definovaný v hlavička sestávající ze dvou datových prvků nebo objektů.

  • První prvek je označen jako „první“ a druhý prvek jako „druhý“ a pořadí je pevné (první, druhé).
  • Pár lze přiřadit, zkopírovat a porovnat. Pole objektů přidělených v a mapa nebo hash_map je ve výchozím nastavení typu „pár“, ve kterém jsou všechny „první“ prvky jedinečné klíče spojené s jejich „druhými“ hodnotovými objekty.
  • Pro přístup k prvkům používáme název proměnné následovaný operátorem tečka následovaným klíčovým slovem first nebo second.

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ýstup

100 G>

Inicializace páru: Můžeme také inicializovat pár.

Syntax:

pair Pair_name (value1, value2) ;>

Různé způsoby inicializace 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>

Dalším způsobem, jak inicializovat pár, je použití funkce make_pair().

g2 = make_pair(1, 'a');>

Další platná syntaxe pro deklaraci páru je:

g2 = {1, 'a'};>

CPP

životní cyklus sdlc




// 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ýstup

GeeksForGeeks 1.23>

Poznámka: Pokud není inicializována, automaticky se inicializuje první hodnota z páru.

C++




řetězec.obsahuje java
// CPP program to illustrate> // auto-initializing of pair STL> #include> #include> using> namespace> std;> int> main()> {> >pair<>int>,>double>>PAIR1;> >pairchar>PAIR2; // je inicializováno 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ýstup:

00>

Funkce členů

1) make_pair() : Tato funkce šablony umožňuje vytvořit pár hodnot bez explicitního zápisu typů.
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ýstup

100 G GeeksForGeeks 1.23 GeeksForGeeks is Best 4.56>

2) výměna: Tato funkce zamění obsah jednoho párového objektu s obsahem jiného párového objektu. Páry musí být stejného typu.
Syntax:

tabulka popisů v mysql
pair1.swap(pair2) ;>

Pro dva dané páry řekněme pár1 a pár2 stejného typu, funkce swap prohodí pár1.první za pár2.první a pár1.sekundu za pár2.sekunda.

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ýstup

Before swapping: Contents of pair1 = A 1Contents of pair2 = B 2 After swapping: Contents of pair1 = B 2Contents of pair2 = A 1>

3) kravata(): Tato funkce funguje stejně jako v n-tice . Vytvoří n-tici lvalue odkazů na své argumenty, tj. rozbalí n-tici (nebo zde pár) hodnot do samostatných proměnných. Stejně jako u n-tic, i zde jsou dvě varianty kravaty, s ignorováním a bez něj. Klíčové slovo ignore ignoruje určitý prvek n-tice před rozbalením.
N-tice však mohou mít více argumentů, ale dvojice mají pouze dva argumenty. V případě dvojice párů je tedy třeba vybalení výslovně řešit.
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ýstup

1 2 3 2 3 4 a>

Kód pro ilustraci funkcí v páru:

CPP




// CPP program to illustrate pair in STL> #include> #include> #include> using> namespace> std;> int> main()> {> >pairint>gl; pairint> g2('Kvíz', 3); pairint> g3(g2); pár g4(5,10); g1 = make_pair(string('Geeks'), 1); g2.first = '.com'; g2.sekunda = 2; cout<< 'This is pair g' << g1.second << ' with ' << 'value ' << g1.first << '.' << endl << endl; cout << 'This is pair g' << g3.second << ' with value ' << g3.first << 'This pair was initialized as a copy of ' << 'pair g2' << endl << endl; cout << 'This is pair g' << g2.second << ' with value ' << g2.first << ' The values of this pair were' << ' changed after initialization.' << endl << endl; cout << 'This is pair g4 with values ' << g4.first << ' and ' << g4.second << ' made for showing addition. The ' << 'sum of the values in this pair is ' << g4.first + g4.second << '.' << endl << endl; cout << 'We can concatenate the values of' << ' the pairs g1, g2 and g3 : ' << g1.first + g3.first + g2.first << endl << endl; cout << 'We can also swap pairs ' << '(but type of pairs should be same) : ' << endl; cout << 'Before swapping, ' << 'g1 has ' << g1.first << ' and g2 has ' << g2.first << endl; swap(g1, g2); cout << 'After swapping, ' << 'g1 has ' << g1.first << ' and g2 has ' << g2.first; return 0; }>

>

>

Výstup

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á složitost: O(1).

Pomocný prostor: O(1).

operátory (=, ==, !=,>=, <=) ve dvojici

Můžeme použít i operátory s páry.

1) pomocí equal(=): Přiřadí nový objekt pro párový objekt. Syntax:

pair& operator= (const pair& pr);>

Toto přiřadí pr jako nový obsah pro objekt pair. První hodnotě je přiřazena první hodnota pr a druhé hodnotě je přiřazena druhá hodnota pr.

2) Porovnávací (==) operátor s párem: Pro dva dané páry, řekněme pár1 a pár2, porovnávací operátor porovná první hodnotu a druhou hodnotu těchto dvou párů, tj. pokud se pár1.první rovná pár2.první nebo ne a pár1.sekunda se rovná pár2.sekunda nebo ne. .

tj. pokud ( (par1.první ==pár2.první) && (pár1.sekunda==pár2.sekunda) )

Pokud je některá z těchto dvou podmínek nepravdivá, vrátí hodnotu false, jinak platí.

3) Nerovný (!=) operátor s párem: Pro dané dva páry, řekněme pár1 a pár2, operátor != porovná první hodnoty těchto dvou párů, tj. pokud se pár1.první rovná páru2.první nebo ne, pokud se rovnají, zkontroluje druhé hodnoty obou.

celé číslo na dvojnásobek java

4) Logické (>=, <= )operátory s párem: Pro dané dva páry řekněme pár1 a pár2, =,>, lze použít i s páry. Vrací 0 nebo 1 pouze porovnáním první hodnoty z páru. Pro dvojice jako p1=(1,20) a p2=(1,10) p2nebo

&list=PLqM7alHXFySGg6GSRmE2INI4k8fPH5qVB