Pair<T1,T2> is a heterogeneous pair: it holds one object of type
T1 and one of type T2. A pair is much like a Container,
in that it "owns" its elements. It is not actually a model of
Container, though, because it does not support the standard
methods (such as iterators) for accessing the elements of a
Container.
Functions that need to return two values often return a pair.
Example
pair<bool, double> result = do_a_calculation();
if (result.first)
do_something_more(result.second);
else
report_error();
Definition
Defined in the standard header utility, and in the nonstandard
backward-compatibility header pair.h.
T1 and T2 must both be models of Assignable. Additional operations
have additional requirements. Pair's default constructor may only
be used if both T1 and T2 are DefaultConstructible,
operator== may only be used if both T1 and T2 are
EqualityComparable, and operator< may only be used if both
T1 and T2 are LessThanComparable.
These members are not defined
in the Assignable requirements,
but are specific to pair.
Member
Description
first_type
The type of the pair's first component. This is a typedef for
the template parameter T1
second_type
The type of the pair's second component. This is a typedef for
the template parameter T2
pair()
The default constructor. It uses constructs objects of types
T1 and T2 using their default constructors. This constructor
may only be used if both T1 and T2 are DefaultConstructible.
pair(const first_type& x, const second_type& y)
The pair constructor. Constructs a pair such that first is constructed
from x and second is constructed from y.
first
Public member variable of type first_type: the first object stored in the pair.
second
Public member variable of type second_type: The second object stored in the pair.
The equality operator. The return value is true if and only
the first elements of x and y are equal, and the second
elements of x and y are equal. This operator may only
be used if both T1 and T2 are EqualityComparable.
This is a global function, not a member function.
The comparison operator. It uses lexicographic comparison:
the return value is true if the
first element of x is less than the first element of y,
and false if the first element of y is less than the first
element of x. If neither of these is the case, then
operator< returns the result of comparing the second elements
of x and y. This operator may only
be used if both T1 and T2 are LessThanComparable.
This is a global function, not a member function.