프로그래밍 언어/C++
C++ 템플릿 value_type
더해리
2021. 1. 1. 18:45
반응형
함수 템플릿을 구현하였을때 함수 내부에서 값의 타입이 필요할 경우
- ::value_type 이용
- 대신 auto 사용 가능
#include <iostream>
#include <vector>
#include <list>
using namespace std;
//컨테이너의 데이터 타입
template<typename T>
void print_first_element(T& v)
{
// 1.값의 데이터 타입이 필요한 경우
typename T::value_type n = v.front();
// 2.값의 데이터 타입 대신 auto사용 가능
auto n = v.front();
cout << n << endl;
}
int main()
{
list<double> v = { 1,2,3 };
print_first_element(v);
}
C++ 17에서 클래스 템플릿 타입 추론(Class Template Type Deduction)에서 value_type 사용 예
#include <iostream>
#include <vector>
#include <list>
using namespace std;
template<typename T>
class Vector
{
T* buff;
int size;
public:
Vector(int sz, T value) {}
template<typename C> Vector(C c) {}
};
// C++ 17의 클래스 사용자 정의 타입 추론을 정의할때 아래와 같이 값의 타입이 필요한 경우 auto 사용이 불가
template<typename C>
Vector(C c)->Vector<typename C::value_type>;
int main()
{
Vector v(10, 3);
// Vector에 list Container 인자로 넣을 경우, Container 내부 값의 타입 추론이 필요하다.
list s = { 1,2,3 };
Vector v2(s);
}반응형