std::pair::pair
| (1) | ||
pair(); |
(do C++11) | |
constexpr pair(); |
(od C++11) | |
| (2) | ||
pair( const T1& x, const T2& y ); |
||
| (3) | ||
template< class U1, class U2 > pair( U1&& x, U2&& y ); |
(od C++11) | |
| (4) | ||
template< class U1, class U2 > pair( const pair<U1, U2>& p ); |
||
| (5) | ||
template< class U1, class U2 > pair( pair<U1, U2>&& p ); |
(od C++11) | |
template< class... Args1, class... Args2 > pair( std::piecewise_construct_t, std::tuple<Args1...> first_args, std::tuple<Args2...> second_args ); |
(6) | (od C++11) |
pair( const pair& p ) = default; |
(7) | |
pair( pair&& p ) = default; |
(8) | (od C++11) |
Konstruuje nową parę.
1) Domyślny konstruktor. Inicjalizuje wartości(ang) obu elementów pary, first i second.
2) Inicjalizuje first wartością x i second wartością y.
3) Inicjalizuje first za pomocą std::forward<U1>(x) i second za pomocą std::forward<U2>(y).
|
4) Inicjalizuje first wartością p.first i second wartością p.second.
5) Inicjalizuje first za pomocą std::forward<U1>(p.first) i second za pomocą std::forward<U2>(p.second).
6) Przekazuje elementy first_args do konstruktora first i przekazuje elementy second_args do konstruktora second. Jest to jedyny nie-domyślny konstruktor, który może zostać użyty do stworzenia pary elementów o niekopiowalnych i nieprzenaszalnych typach.
7) Konstruktor kopiujący jest domyślny, i jest constexpr jeśli kopiowanie obu elementów spełnia wymogi funkcji constexpr.
8) Konstruktor przenoszący jest domyślny, i jest constexpr jeśli przenoszenie obu elementów spełnia wymogi funkcji constexpr.
Spis treści
Parametry
| x | - | wartość do zainicjalizowania pierwszego elementu pary |
| y | - | wartość do zainicjalizowania drugiego elementu pary |
| p | - | para wartości, użyta do zainicjalizowania wartości obu elementów tej pary |
| first_args | - | krotka argumentów konstruktora, do zainicjalizowania pierwszego elementu tej pary |
| second_args | - | krotka argumentów konstruktora, do zainicjalizowania drugiego elementu tej pary |
Wyjątki
Nie wyrzuca wyjątków, o ile jedna z wykorzystywanych operacji (np. konstruktor kopiujący) nie wyrzuci wyjątku.
Przykład
#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';
}
Wynik:
Value-initialized: 0, 0
Initialized with two values: 42, 0.123
Implicitly converted: *, 0
Piecewise constructed: (0.123,7.7), aaaaaaaaaa
Zobacz także
| tworzy obiekt pary pair, o typach elementów zdefiniowanych przez typy argumentów (szablon funkcji) |