std::pair::pair
pair(); constexpr pair(); |
(1) | (until C++11) (since C++11) |
pair( const T1& x, const T2& y ); |
(2) | |
template< class U1, class U2 > pair( U1&& x, U2&& y ); |
(3) | (since C++11) |
template< class U1, class U2 > pair( const pair<U1,U2>& p ); |
(4) | |
template< class U1, class U2 > pair( pair<U1,U2>&& p ); |
(5) | (since C++11) |
template< class... Args1, class... Args2 > pair( std::piecewise_construct_t, |
(6) | (since C++11) |
pair( const pair& p ) = default; |
(7) | |
pair( pair&& p ) = default; |
(8) | (since C++11) |
Constructs a new pair.
1) Default constructor. Value-initializes both elements of the pair, first and second.
2) Initializes first with x and second with y.
3) Initializes first with std::forward<U1>(x) and second with std::forward<U2>(y).
4) Initializes first with p.first and second with p.second.
5) Initializes first with std::move<U1>(p.first) and second with std::move<U2>(p.second).
6) Forwards the elements of first_args to the constructor of first and forwards the elements of second_args to the constructor of second. This is the only non-default constructor that can be used to create a pair of non-copyable non-movable types.
7) Copy constructor is implicitly generated.
8) Move constructor is implicitly generated.
[edit] Parameters
x | - | value to initialize the first element of this pair |
y | - | value to initialize the second element of this pair |
p | - | pair of values used to initialize both elements of this pair |
first_args | - | tuple of constructor arguments to initialize the first element of this pair |
second_args | - | tuple of constructor arguments to initialize the second element of this pair |
[edit] Example
#include <utility> #include <string> #include <complex> #include <tuple> #include <iostream> int main() { std::pair<int, float> p1; std::cout << "Value-initialized: " << p1.first << ", " << p1.second << '\n'; std::pair<int, double> p2(42, 0.123); std::cout << "Initialized with two values: " << p2.first << ", " << p2.second << '\n'; std::pair<char, int> p4(p2); std::cout << "Implicitly converted: " << p4.first << ", " << p4.second << '\n'; std::pair<std::complex<double>, std::string> p6( std::piecewise_construct, std::forward_as_tuple(0.123, 7.7), std::forward_as_tuple(10, 'a')); std::cout << "Piecewise constructed: " << p6.first << ", " << p6.second << '\n'; }
Output:
Value-initialized: 0, 0 Initialized with two values: 42, 0.123 Implicitly converted: *, 0 Piecewise constructed: (0.123,7.7), aaaaaaaaaa
[edit] See also
creates a pair object of type, defined by the argument types (function template) |