logo

Para w standardowej bibliotece szablonów C++ (STL)

Para służy do łączenia ze sobą dwóch wartości, które mogą należeć do różnych typów danych. Para umożliwia przechowywanie dwóch heterogenicznych obiektów jako pojedynczej jednostki. Jest zasadniczo używany, jeśli chcemy przechowywać krotki. Kontener par jest prostym kontenerem zdefiniowanym w nagłówek składający się z dwóch elementów danych lub obiektów.

  • Pierwszy element jest określany jako „pierwszy”, a drugi jako „drugi”, a kolejność jest ustalona (pierwszy, drugi).
  • Parę można przypisywać, kopiować i porównywać. Tablica obiektów przydzielonych w a mapa lub hash_map jest domyślnie typu „pair”, w którym wszystkie „pierwsze” elementy są unikalnymi kluczami powiązanymi z ich „drugimi” obiektami wartości.
  • Aby uzyskać dostęp do elementów, używamy nazwy zmiennej, po której następuje operator kropki, po którym następuje słowo kluczowe pierwszy lub drugi.

Składnia:



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>>PARA1;> >// 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;> }>



>

>

Wyjście

100 G>

Inicjowanie pary: Możemy także zainicjować parę.

Składnia:

pair Pair_name (value1, value2) ;>

Różne sposoby inicjalizacji pary:

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>

Innym sposobem zainicjowania pary jest użycie funkcji make_pair().

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

Inną prawidłową składnią deklarowania pary jest:

g2 = {1, 'a'};>

CPP

jak otworzyć plik json




// CPP program to illustrate> // Initializing of pair STL> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >// defining a pair> >pairdouble>PARA2('GeeksForGeeks', 1,23); cout<< PAIR2.first << ' '; cout << PAIR2.second << endl; return 0; }>

>

>

Wyjście

GeeksForGeeks 1.23>

Notatka: Jeśli nie zostanie zainicjowana, pierwsza wartość pary zostanie automatycznie zainicjowana.

C++


porównywalny ciąg w Javie



// CPP program to illustrate> // auto-initializing of pair STL> #include> #include> using> namespace> std;> int> main()> {> >pair<>int>,>double>>PARA1;> >pairchar>PARA2; // jest inicjowany 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; }>

>

>

Wyjście:

00>

Funkcje członkowskie

1) make_pair() : Ta funkcja szablonu umożliwia utworzenie pary wartości bez jawnego zapisywania typów.
Składnia:

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>>PARA1;> >pairdouble>PARA2('GeeksForGeeks', 1,23); parapodwójna> PARA3; PARA1.pierwsza = 100; PARA1.sekunda = 'G'; PAIR3 = make_pair('GeeksForGeeks jest najlepszy', 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; }>

>

>

Wyjście

100 G GeeksForGeeks 1.23 GeeksForGeeks is Best 4.56>

2) zamiana: Ta funkcja zamienia zawartość jednego obiektu pary na zawartość innego obiektu pary. Pary muszą być tego samego typu.
Składnia:

USA, ile miast
pair1.swap(pair2) ;>

Dla dwóch podanych par, powiedzmy pair1 i pair2 tego samego typu, funkcja zamiany zamieni parę 1.first z parą2.first i parę 1.sekundę z parą2.sekunda.

CPP




// CPP Program to demonstrate swap()> // function in pair> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>char>,>int>>para1 = make_pair(>'A'>, 1);> >pair<>char>,>int>>para2 = 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;> }>

>

>

Wyjście

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

3) krawat(): Funkcja ta działa tak samo jak w krotki . Tworzy krotkę lwartości odniesień do swoich argumentów, tj. rozpakowuje wartości krotki (lub tutaj pary) do oddzielnych zmiennych. Podobnie jak w krotkach, tutaj również występują dwa warianty remisu, z ignorowaniem i bez. ignorowanie słowa kluczowego ignoruje określony element krotki przed rozpakowaniem.
Jednak krotki mogą mieć wiele argumentów, ale pary mają tylko dwa argumenty. Zatem w przypadku pary par rozpakowywanie musi być wyraźnie obsługiwane.
Składnia:

tie(int &, int &) = pair1;>

CPP




// CPP code to illustrate tie() in Pair> #include> using> namespace> std;> // Driver Code> int> main()> {> >pair<>int>,>int>>para1 = { 1, 2 };> >int> a, b;> >tie(a, b) = pair1;> >cout << a <<>' '> << b <<>' '>;> >pair<>int>,>int>>para2 = { 3, 4 };> >tie(a, ignore) = pair2;> >// prints old value of b> >cout << a <<>' '> << b <<>' '>;> >// Illustrating pair of pairs> >pair<>int>, pair<>int>,>char>>> para3 = { 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.>

>

>

Wyjście

1 2 3 2 3 4 a>

Kod ilustrujący funkcje w parze:

CPP




// CPP program to illustrate pair in STL> #include> #include> #include> using> namespace> std;> int> main()> {> >pairint>g1; pairint> g2('Quiz', 3); paraint> g3(g2); para 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; }>

>

>

Wyjście

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>

Złożoność czasowa: O(1).

Przestrzeń pomocnicza: O(1).

operatory(=, ==, !=,>=, <=) w parach

Możemy używać operatorów również z parami.

1) używając równości(=): Przypisuje nowy obiekt do obiektu pary. Składnia:

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

Spowoduje to przypisanie pr jako nowej zawartości obiektu pary. Do pierwszej wartości przypisana jest pierwsza wartość pr, a do drugiej wartości przypisana jest druga wartość pr.

2) Operator porównania (==) z parą: Dla dwóch podanych par, powiedzmy para1 i para2, operator porównania porównuje pierwszą wartość i drugą wartość tych dwóch par, tj. czy para1.pierwsza jest równa pair2.first, czy nie i czy para1.sekunda jest równa parze2.sekunda, czy nie .

js limit czasu

tj. if ( (pari1.first ==para2.pierwsza) && (para1.sekunda==para2.sekunda) )

Jeśli którykolwiek z dwóch warunków jest fałszywy, zwraca wartość false, w przeciwnym razie true.

3) Operator nierówny (!=) z parą: Dla danych dwóch par, powiedzmy para1 i para2, operator != porównuje pierwsze wartości tych dwóch par, tj. jeśli para1.first jest równa pair2.first lub nie, jeśli są równe, sprawdza drugie wartości obu.

4) Operatory logiczne(>=, <= ) z parą: Dla danych dwóch par, powiedzmy para1 i para2, symbole =,> można również stosować w przypadku par. Zwraca 0 lub 1, porównując tylko pierwszą wartość z pary. Dla par takich jak p1=(1,20) i p2=(1,10) p2Lub

&list=PLqM7alHXFySGg6GSRmE2INI4k8fPH5qVB