<tuple>
함수
apply
template <class F, class Tuple> constexpr decltype(auto) apply(F&& f, Tuple&& t);
설명
튜플 t를 사용하여 함수 F를 호출합니다.
forward_as_tuple
template <class... TTypes>
constexpr tuple<TTypes&&...> forward_as_tuple(TTypes&&...) noexcept;
Return Value
tuple<TTypes&&...>(std::forward<TTypes>(t)...)
을(를) 반환합니다.
설명
함수에 인수로 전달하기에 적합하지 않은 인수에 대한 참조 튜플을 생성합니다.
get
인덱스 또는 형식(C++14)을 기준으로 tuple
개체에서 요소를 가져옵니다.
// by index:
// get reference to Index element of tuple
template <size_t Index, class... Types>
constexpr tuple_element_t<Index, tuple<Types...>>& get(tuple<Types...>& Tuple) noexcept;
// get const reference to Index element of tuple
template <size_t Index, class... Types>
constexpr const tuple_element_t<Index, tuple<Types...>>& get(const tuple<Types...>& Tuple) noexcept;
// get rvalue reference to Index element of tuple
template <size_t Index, class... Types>
constexpr tuple_element_t<Index, tuple<Types...>>&& get(tuple<Types...>&& Tuple) noexcept;
// (C++14) by type:
// get reference to T element of tuple
template <class T, class... Types>
constexpr T& get(tuple<Types...>& Tuple) noexcept;
// get const reference to T element of tuple
template <class T, class... Types>
constexpr const T& get(const tuple<Types...>& Tuple) noexcept;
// get rvalue reference to T element of tuple
template <class T, class... Types>
constexpr T&& get(tuple<Types...>&& Tuple) noexcept;
매개 변수
Index
가져올 요소의 인덱스입니다.
유형
튜플에서 선언된 형식의 시퀀스로, 선언 순서대로 나열됩니다.
T
가져올 요소의 형식입니다.
Tuple
임의의 개수의 요소를 포함하는 A std::tuple
입니다.
설명
템플릿 함수는 인덱스 인덱스의 값 또는 개체의 T 형식에 대한 참조를 tuple
반환합니다.
get<T>(Tuple)
을 호출할 때 튜플에 T 형식의 요소가 두 개 이상 있거나 없는 경우 컴파일러 오류가 생성됩니다.
예시
#include <tuple>
#include <iostream>
#include <string>
using namespace std;
int main() {
tuple<int, double, string> tup(0, 1.42, "Call me Tuple");
// get elements by index
cout << " " << get<0>(tup);
cout << " " << get<1>(tup);
cout << " " << get<2>(tup) << endl;
// get elements by type
cout << " " << get<int>(tup);
cout << " " << get<double>(tup);
cout << " " << get<string>(tup) << endl;
}
0 1.42 Call me Tuple
0 1.42 Call me Tuple
make_from_tuple
template <class T, class Tuple> constexpr T make_from_tuple(Tuple&& t);
설명
return make_from_tuple_impl<T>(forward<Tuple>(t), make_index_sequence<tuple_size_v<decay_t<Tuple>>>{})
와 동일합니다.
make_tuple
요소 값에서 tuple
을 만듭니다.
template <class T1, class T2, ..., class TN>
tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tN);
매개 변수
테네시
Nth 함수 매개 변수의 형식입니다.
테네시
Nth 함수 매개 변수의 값입니다.
설명
템플릿 함수tuple<V1, V2, ..., VN>(t1, t2, ..., tN)
는 각 형식이 해당 Ti
형식 Vi
일 X&
때 반환되고 cv
reference_wrapper<X>
, 그렇지 않으면 입니다Ti
.
make_tuple
의 장점 하나는 저장되는 개체 형식이 컴파일러에서 자동으로 저장되며 명시적으로 지정하지 않아도 된다는 점입니다. make_tuple<int, int>(1, 2)
를 사용할 경우 불필요하게 장황해지고 컴파일 문제의 원인이 될 수 있는 복잡한 rvalue 참조 문제만 더해지므로 make_tuple
등의 명시적 템플릿 인수를 사용하지 마십시오.
예시
// std__tuple__make_tuple.cpp
// compile by using: /EHsc
#include <tuple>
#include <iostream>
typedef std::tuple<int, double, int, double> Mytuple;
int main() {
Mytuple c0(0, 1, 2, 3);
// display contents " 0 1 2 3"
std::cout << std::get<0>(c0) << " ";
std::cout << std::get<1>(c0) << " ";
std::cout << std::get<2>(c0) << " ";
std::cout << std::get<3>(c0) << std::endl;
c0 = std::make_tuple(4, 5, 6, 7);
// display contents " 4 5 6 7"
std::cout << std::get<0>(c0) << " ";
std::cout << std::get<1>(c0) << " ";
std::cout << std::get<2>(c0) << " ";
std::cout << std::get<3>(c0) << std::endl;
return (0);
}
0 1 2 3
4 5 6 7
swap
template <class... Types>
void swap(tuple<Types...>& x, tuple<Types...>& y) noexcept(see below );
tie
요소 선언에서 tuple
을 만듭니다.
template <class T1, class T2, ..., class TN>
tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tN);
매개 변수
테네시
N번째 튜플 요소의 기본 형식입니다.
설명
템플릿 함수가 tuple<T1&, T2&, ..., TN&>(t1, t2, ..., tN)
를 반환합니다.
예시
// std__tuple__tie.cpp
// compile with: /EHsc
#include <tuple>
#include <iostream>
typedef std::tuple<int, double, int, double> Mytuple;
int main() {
Mytuple c0(0, 1, 2, 3);
// display contents " 0 1 2 3"
std::cout << " " << std::get<0>(c0);
std::cout << " " << std::get<1>(c0);
std::cout << " " << std::get<2>(c0);
std::cout << " " << std::get<3>(c0);
std::cout << std::endl;
int v4 = 4;
double v5 = 5;
int v6 = 6;
double v7 = 7;
std::tie(v4, v5, v6, v7) = c0;
// display contents " 0 1 2 3"
std::cout << " " << v4;
std::cout << " " << v5;
std::cout << " " << v6;
std::cout << " " << v7;
std::cout << std::endl;
return (0);
}
0 1 2 3
0 1 2 3
tuple_cat
template <class... Tuples> constexpr tuple<CTypes...> tuple_cat(Tuples&&...);
Return Value
각 형식 요소를 초기화하여 생성된 튜플 개체입니다.
tuple_element_t
template <size_t I, class T>
using tuple_element_t = typename tuple_element<I, T>::type;
tuple_size_v
template <class T>
inline constexpr size_t tuple_size_v = tuple_size<T>::value;