Der Paarcontainer ist ein einfacher Container, der im Header <utility> definiert ist und aus zwei Datenelementen oder Objekten besteht. 

  • Das erste Element wird als „erstes“ und das zweite Element als „zweites“ bezeichnet und die Reihenfolge ist festgelegt (erstes, zweites).
  • Paar wird verwendet, um zwei Werte zu kombinieren, die unterschiedlichen Typs sein können. Pair bietet eine Möglichkeit, zwei heterogene Objekte als eine Einheit zu speichern.
  • Paar kann zugeordnet, kopiert und verglichen werden. Das in einer map oder hash_map zugewiesene Array von Objekten ist standardmäßig vom Typ „pair“, bei dem alle „ersten“ Elemente eindeutige Schlüssel sind, die ihren „zweiten“ Wertobjekten zugeordnet sind.
  • Um auf die Elemente zuzugreifen, verwenden wir den Variablennamen, gefolgt vom Punktoperator, gefolgt vom Schlüsselwort first oder second.

Syntax : 

pair (data_type1, data_type2) Pair_name

CPP

// CPP program to illustrate pair STL
#include <iostream>
#include <utility>
using namespace std;
 
int main()
{
    pair<int, char> PAIR1;
 
    PAIR1.first = 100;
    PAIR1.second = 'G';
 
    cout << PAIR1.first << " ";
    cout << PAIR1.second << endl;
 
    return 0;
}

 
 

Ausgabe
100 G

Initialisieren eines Paares

Wir können auch ein Paar initialisieren. 

Syntax :

pair (data_type1, data_type2) Pair_name (value1, value2) ;

Verschiedene Möglichkeiten, ein Paar zu initialisieren: 

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

Eine andere Möglichkeit, ein Paar zu initialisieren, ist die Verwendung der Funktion make_pair(). 

g2 = make_pair(1, 'a');

Eine andere gültige Syntax zum Deklarieren von Paaren ist:

g2 = {1, 'a'};

CPP

// CPP program to illustrate
// Initializing of pair STL
#include <iostream>
#include <utility>
using namespace std;
 
int main()
{
    pair<string, double> PAIR2("GeeksForGeeks", 1.23);
 
    cout << PAIR2.first << " ";
    cout << PAIR2.second << endl;
 
    return 0;
}

 
 

Ausgabe
GeeksForGeeks 1.23

Hinweis: Wenn nicht initialisiert, wird der erste Wert des Paares automatisch initialisiert. 

C++

// CPP program to illustrate
// auto-initializing of pair STL
#include <iostream>
#include <utility>
 
using namespace std;
 
int main()
{
    pair<int, double> PAIR1;
    pair<string, char> PAIR2;
 
    // it is initialised to 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;
}

Ausgabe: 

00

Mitgliedsfunktionen

  1. make_pair() : Diese Vorlagenfunktion ermöglicht es, ein Wertepaar zu erstellen, ohne die Typen explizit zu schreiben. 
    Syntax :
Pair_name = make_pair (value1,value2);

CPP

#include <iostream>
#include <utility>
using namespace std;
 
int main()
{
    pair <int, char> PAIR1 ;
    pair <string, double> PAIR2 ("GeeksForGeeks", 1.23) ;
    pair <string, double> 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;
}

Ausgabe: 

100 G
GeeksForGeeks 1.23
GeeksForGeeks is Best 4.56

operator(=, ==, !=, >=, <=) : Wir können Operatoren auch mit Paaren verwenden. 

  • using equal(=) : Es weist einem Paarobjekt ein neues Objekt zu. 
    Syntax :
pair& operator= (const pair& pr);
  • Dies weist pr als neuen Inhalt für das Paarobjekt zu. Dem ersten Wert wird der erste Wert von pr und dem zweiten Wert der zweite Wert von pr zugewiesen.
  • Vergleichsoperator (==) mit Paar : Für zwei gegebene Paare, sagen wir Paar1 und Paar2, vergleicht der Vergleichsoperator den ersten Wert und den zweiten Wert dieser beiden Paare, dh ob Paar1.erster gleich Paar2.erster ist oder nicht UND wenn Paar1.zweiter gleich pair2.second ist oder nicht.
  • Operator Ungleich (!=) mit Paar : Für gegebene zwei Paare, sagen wir Paar1 und Paar2, vergleicht der Operator != die ersten Werte dieser beiden Paare, dh ob Paar1.first gleich Paar2.first ist oder nicht, wenn sie dann gleich sind es prüft die zweiten Werte von beiden.
  • Logische ( >=, <= )Operatoren mit Paar : Für gegebene zwei Paare, sagen wir Paar1 und Paar2, kann das =, > auch mit Paaren verwendet werden. Es gibt 0 oder 1 zurück, indem es nur den ersten Wert des Paares vergleicht.
    Für Paare wie p1=(1,20) und p2=(1,10) 
    sollte p2<p1 0 ergeben (da nur das 1. Element verglichen wird und sie gleich sind, also definitiv nicht weniger), aber das stimmt nicht. Hier vergleicht das Paar das zweite Element und gibt 1 zurück, wenn es erfüllt ist 
    (dies ist nur der Fall, wenn das erste Element gleich wird, während nur ein Vergleichsoperator > oder < verwendet wird, ansonsten funktionieren diese Operatoren wie oben erwähnt).
     

swap : Diese Funktion tauscht den Inhalt eines Paarobjekts mit dem Inhalt eines anderen Paarobjekts aus. Die Paare müssen vom gleichen Typ sein. 
Syntax :

pair1.swap(pair2) ;

Für zwei gegebene Paare, z. B. Paar1 und Paar2 des gleichen Typs, tauscht die Swap-Funktion Paar1.erste mit Paar2.erste und Paar1.zweite mit Paar2.zweite aus. 

CPP

#include <iostream>
#include<utility>
 
using namespace std;
 
int main()
{
    pair<char, int>pair1 = make_pair('A', 1);
    pair<char, int>pair2 = make_pair('B', 2);
 
    cout << "Before swapping:\n " ;
    cout << "Contents of pair1 = "
         << pair1.first << " " << pair1.second ;
    cout << "Contents of pair2 = "
         << pair2.first << " " << pair2.second ;
    pair1.swap(pair2);
 
    cout << "\nAfter swapping:\n ";
    cout << "Contents of pair1 = "
         << pair1.first << " " << pair1.second ;
    cout << "Contents of pair2 = "
         << pair2.first << " " << pair2.second ;
 
    return 0;
}

Ausgang

Before swapping:
Contents of pair1 = (A, 1)
Contents of pair2 = (B, 2)

After swapping:
Contents of pair1 = (B, 2)
Contents of pair2 = (A, 1)

tie() : Diese Funktion funktioniert genauso wie in tuples . Es erstellt ein Tupel von Lvalue-Referenzen zu seinen Argumenten, dh um die Tupel- (oder hier Paar-) Werte in separate Variablen zu entpacken. Genau wie bei Tupeln gibt es auch hier zwei Varianten von Tie, mit und ohne „Ignorieren“. Das Schlüsselwort „ignore“ ignoriert, dass ein bestimmtes Tupelelement entpackt wird. 
Tupel können jedoch mehrere Argumente haben, aber Paare haben nur zwei Argumente. Im Fall von Paaren von Paaren muss das Auspacken also explizit gehandhabt werden. 
Syntax : 

tie(int &, int &) = pair1; 

CPP

// CPP code to illustrate tie() in pairs
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    pair<int, int> pair1 = { 1, 2 };
    int a, b;
    tie(a, b) = pair1;
    cout << a << " " << b << "\n";
 
    pair<int, int> pair2 = { 3, 4 };
    tie(a, ignore) = pair2;
   
    // prints old value of b
    cout << a << " " << b << "\n";
 
    // 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
    x = pair3.first;
    tie(y, z) = pair3.second;
    cout << x << " " << y << " " << z << "\n";   
    
}
 
 // contributed by sarthak_eddy.

Ausgabe : 

1 2
3 2
3 4 a

CPP

//CPP program to illustrate pair in STL
#include <iostream>
#include <utility>
#include <string>
using namespace std;
 
int main()
{
    pair <string, int> g1;
    pair <string, int> g2("Quiz", 3);
    pair <string, int> g3(g2);
    pair <int, int> g4(5, 10);
 
    g1 = make_pair(string("Geeks"), 1);
    g2.first = ".com";
    g2.second = 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
        << "\nThe 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. \nThe "
        << "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;
}

Ausgabe: 

This is pair g1 with value Geeks.
This is pair g3 with value Quiz
This 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

https://youtu.be/4LG1H3x6

-BQ?list=PLqM7alHXFySGg6GSRME2INI4k8fPH5qVB 
 

Dieser Artikel wurde von MAZHAR IMAM KHAN beigesteuert . Wenn Ihnen GeeksforGeeks gefällt und Sie etwas beitragen möchten, können Sie auch einen Artikel über write.geeksforgeeks.org schreiben oder Ihren Artikel per E-Mail an review-team@geeksforgeeks.org senden. Sehen Sie, wie Ihr Artikel auf der Hauptseite von GeeksforGeeks erscheint, und helfen Sie anderen Geeks.
Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder weitere Informationen zu dem oben diskutierten Thema teilen möchten.