Reference
C Library
IOstream Library
Strings library
STL Containers
STL Algorithms
Miscellaneous
Miscellaneous
complex
exception
functional
iterator
limits
locale
memory
new
numeric
stdexcept
typeinfo
utility
valarray
utility
make_pair
pair
rel_ops


pair

class template
<utility>
template <class T1, class T2> struct pair;

Pair of values

This class couples together a pair of values, which may be of different types (T1 and T2). The individual values can be accessed through the public members first and second.

The class is defined as:

1
2
3
4
5
6
7
8
9
10
11
12
template <class T1, class T2> struct pair
{
  typedef T1 first_type;
  typedef T2 second_type;
  T1 first;
  T2 second;
  pair() : first(T1()), second(T2()) {}
  pair(const T1& x, const T2& y) : first(x), second(y) {}
  template <class U, class V>
    pair (const pair<U,V> &p) : first(p.first), second(p.second) { }
}


Members

first_type, second_type
Alises of template parameters T1 and T2 respectively.
first, second
Data members containing the first and second values stored in the pair.
pair()
Constructs a pair object with each of its members first and second constructed with their respective default constructors.
pair(const T1& x, const T2& y)
Constructs a pair object with its members first and second initialized to x and y, respectively.
template <class U, class V> pair (const pair<U,V> &p)
Constructs a pair object with its members first and second initialized to the corresponding elements in p, which must be of any couple of implicitly-convertible types (including the same types).

Global operators

The header <utility> also overloads the relational operators ==, <, !=, >, >= and <= , so as to be able to compare pair objects of the same type directly:

Two pair objects are compared equal if the first elements in both objects compare equal to each other and both second elements compare equal to each other - they all have to match.

In inequality comparisons (<, >), only the first element is compared, except if both first elements compare equal to each other, in this case only the second element is taken into consideration for the comparison operation.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <utility>
#include <string>
using namespace std;
int main () {
  pair <string,double> product1 ("tomatoes",3.25);
  pair <string,double> product2;
  pair <string,double> product3;
  product2.first = "lightbulbs";     // type of first is string
  product2.second = 0.99;            // type of second is double
  product3 = make_pair ("shoes",20.0);
  cout << "The price of " << product1.first << " is $" << product1.second << "\n";
  cout << "The price of " << product2.first << " is $" << product2.second << "\n";
  cout << "The price of " << product3.first << " is $" << product3.second << "\n";
  return 0;
}


Output:

The price of tomatoes is $3.25
The price of lightbulbs is $0.99
The price of shoes is $20

See also