최대 1 분 소요

1. tuple

template< class... Types >
class tuple;
  • 여러 type의 value를 가지는 고정된 자료구조

2. 코드로 알아보기

#include <iostream> 
#include <tuple> 
using namespace std; 
  
int main() 
{ 
  int x[2] = { 1,2 }; 

  tuple<int, double> t2(1, 3.4); 
  tuple<int, double, short> t3(1, 3.4, 2); 

  double d = get<1>(t3); 
  int n    = get<0>(t3); 
}
#include <iostream> 
using namespace std; 
  
// primary template 
template<typename ... Types>
struct xtuple 
{ 
  static constexpr int N = 0; 
}; 

// partial specialization
template<typename T, typename ... Types> 
struct xtuple<T, Types...> : xtuple<Types...> 
{ 
  using BaseType = xtuple<Types...>; 
    
  T value; 
  xtuple() = default;  // 디폴트 생성자

  xtuple(const T& v,  
        const Types& ... args)  
          : value(v), BaseType(args...) {} 

  static constexpr int N = BaseType::N + 1;  // 1개씩 증가하면서 인자의 타입을 할 수 있음
}; 
int main() 
{ 
  xtuple<>                   t0; 
  xtuple<short>              t1(1); 
  xtuple<double, short>      t2(3.4, 3.5); 
  xtuple<int, double, short> t3(3, 3.4, 1); 
}

참고

codenuri 강석민 강사 강의 내용기반으로 정리한 내용입니다.
코드누리
cppreference


This is personal diary for study documents.
Please comment if I'm wrong or missing something else 😄. 

Top

댓글남기기