CS/C++

C++ template 장단점

혀니리리 2023. 12. 14. 11:49
728x90

[C++] template(템플릿) 에 관하여 1 (템플릿이란, 함수 템플릿) (tistory.com)

 

[C++] template(템플릿) 에 관하여 1 (템플릿이란, 함수 템플릿)

안녕하세요 BlockDMask 입니다.오늘은 C++에서 자료형을 마음대로 가지고 놀 수 있는, template (템플릿) 에 대해 알아보겠습니다. 1) 템플릿(Template) 이란.함수나 클래스를 개별적으로 다시 작성하지 않

blockdmask.tistory.com

 

템플릿: 함수나 클래스를 개별적으로 다시 작성하지 않아도 여러 자료형으로 사용할 수 있도록 하게 만들어 놓은

int sum(int a, int b){
	return a + b;
}
double sum(double a, double b){    
	return a + b;
}

템플릿 없을 때

 

template<typename T>

T sum(T a, T b){
	return a + b;
}

템플릿 있을  때 - 함수를 하나로 통일 가능.

 

인자 2개 받을 때 두개의 타입이 다른 경우

template <class T1, class T2>
void printAll(T1 a, T2 b){
	cout << "T1 : " << a << endl;
	cout << "T2 : " << b << endl;
	cout << "T1  + T2: " << a + b << endl;

 

 

#include<iostream>
#include<string>

using namespace std;

template <typename T>
T sum(T a, T b){    
	return a + b;
} 

int main(void) {    
	int a=1, b =2;   

	double d1 = 2.2;   
	double d2 = 3.3;   

	string s1 = "Show me ";   
	string s2 = "The Money 6";     

	cout << "int 합 : " << sum<int>(a, b) << endl; 
	cout << "double 합 : " << sum<double>(d1, d2) << endl;  
	cout << "string 합 : " << sum<string>(s1, s2) << endl;    

	return 0;
}

실제 쓸 때는 명확하게 어떤 자료형을 쓸 건지 <> 안에 표시해주는 것이 조음

 

장점

* 컴파일러가 컴파일 도중 각 템플릿 인스턴스에 대한 코드를 만들어줘

컴파일 속도는 느리지만 런타임 속도는 빠를 수 있음

* 중복코드를 줄여주기 좋음

 

단점

* 컴파일 타임이 비교적 느리고, 템플릿 매개변수를 추가할수록 더 느려짐

* 다형성으로 인해 파일이 커지면 느려질 수 있음

728x90

'CS > C++' 카테고리의 다른 글

얕은복사 / 깊은복사  (0) 2023.12.14
c++ typedef vs using 키워드 차이점  (0) 2023.12.14
c++ 캐스팅  (0) 2023.12.14
<algorithm> 헤더의 sort와 list.sort  (0) 2023.12.14
map과 unordered_map 차이  (0) 2023.12.13