tuple_element 클래스
tuple
요소를 래핑합니다. 특수화는 array
요소 및 pair
요소를 래핑합니다.
구문
// CLASS tuple_element (find element by index)
template <size_t Index, class Tuple>
struct tuple_element;
// tuple_element for const
template <size_t Index, class Tuple>
struct tuple_element<Index, const Tuple>;
// tuple_element for volatile
template <size_t Index, class Tuple>
struct tuple_element<Index, volatile Tuple>;
// tuple_element for const volatile
template <size_t Index, class Tuple>
struct tuple_element<Index, const volatile Tuple>;
// Helper typedef
template <size_t Index, class Tuple>
using tuple_element_t = typename tuple_element<Index, Tuple>::type;
// Specialization for arrays
template <size_t Index, class Elem, size_t Size>
struct tuple_element<Index, array<Elem, Size>>;
// Specializations for pairs
// struct to determine type of element 0 in pair
template <class T1, class T2>
struct tuple_element<0, pair<T1, T2>>;
// struct to determine type of element 1 in pair
template <class T1, class T2>
struct tuple_element<1, pair<T1, T2>>;
매개 변수
Index
지정된 요소의 인덱스입니다.
Tuple
튜플의 형식입니다.
Elem
배열 요소의 형식입니다.
크기
배열 크기입니다.
T1
쌍에 있는 첫 번째 요소의 형식입니다.
T2
쌍의 두 번째 요소 형식입니다.
설명
클래스 템플릿 tuple_element
에는 튜플 형식 튜플의 인덱스 인덱스에서 형식의 동의어인 중첩된 typedef type
가 있습니다.
tuple_element_t
형식 정의는 tuple_element<Index, Tuple>::type
에 사용할 수 있는 편리한 별칭입니다.
배열에 대한 클래스 템플릿 전문화는 요소의 Size
튜플로 인터페이스 array
를 제공하며, 각 형식은 동일합니다. 각 특수화에는 const-volatile 한정이 유지되는 Index 요소 형식의 array
동의어인 중첩된 typedef type
가 있습니다.
pair
형식의 템플릿 특수화는 각각 단일 구성원 형식 정의 type
를 제공합니다. 이 형식 정의는 쌍의 지정된 위치에 있는 요소 형식과 동일한 의미이며, 모든 const 및/또는 volatile 한정자가 유지됩니다. tuple_element_t
형식 정의는 tuple_element<N, pair<T1, T2>>::type
에 사용할 수 있는 편리한 별칭입니다.
함수를 get
사용하여 지정된 위치 또는 지정된 형식의 요소를 반환합니다.
예: 튜플에서 요소 가져오기
#include <tuple>
#include <string>
#include <iostream>
using namespace std;
typedef tuple<int, double, string> MyTuple;
int main() {
MyTuple c0{ 0, 1.5, "Tail" };
tuple_element_t<0, MyTuple> val = get<0>(c0); //get by index
tuple_element_t<1, MyTuple> val2 = get<1>(c0);
tuple_element_t<2, MyTuple> val3 = get<string>(c0); // get by type
cout << val << " " << val2 << " " << val3 << endl;
}
0 1.5 Tail
예: 배열에서 요소 가져오기
#include <array>
#include <iostream>
using namespace std;
typedef array<int, 4> MyArray;
int main()
{
MyArray c0 { 0, 1, 2, 3 };
for (const auto& e : c0)
{
cout << e << " ";
}
cout << endl;
// display first element "0"
tuple_element<0, MyArray>::type val = c0.front();
cout << val << endl;
}
0 1 2 3
0
예: 쌍에서 요소 가져오기
#include <utility>
#include <iostream>
using namespace std;
typedef pair<int, double> MyPair;
int main() {
MyPair c0(0, 1.333);
// display contents "0 1"
cout << get<0>(c0) << " ";
cout << get<1>(c0) << endl;
// display first element "0 " by index
tuple_element<0, MyPair>::type val = get<0>(c0);
cout << val << " ";
// display second element by type
tuple_element<1, MyPair>::type val2 = get<double>(c0);
cout << val2 << endl;
}
0 1.333
0 1.333
요구 사항
헤더:<튜플>
Header:<array(배열> 특수화용)
헤더:<유틸리티> (쌍 특수화용)
네임스페이스: std