본문 바로가기
Programming/C++

[ C++ ] 템플릿과 표준 템플릿 라이브러리(STL)

by 코뮤(commu) 2021. 6. 9.
728x90
반응형

 

제네릭 또는 일반화

 

: 함수나 클래스를 일반화시키고,

매개변수타입을 지정하여 틀에서 찍어 내듯이 함수나 클래스 코드를 생산하는 기법

 

 

 

템플릿

 

: 함수나 클래스를 일반화하는 C++ 도구

: template 키워드로 함수나 클래스 선언

  -> 변수나 매개 변수의 타입만 다르고, 코드 부분이 동일한 함수를 일반화시킨다.

 

제네릭 타입 : 일반화를 위한 데이터 타입

 

 

 

 

템플릿 선언 양식

 

template <class T>

 

또는

 

template <typename T>

 

 

3개의 제네릭 타입을 가진 템플릿 선언

 

template <class T1, class T2, class T3>

 

 

 

 

 

템플릿 사용예시

 

 

#include <iostream>
using namespace std;
template <class T>
void myswap(T& a, T& b) {
	T tmp;
	tmp = a;
	a = b;
	b = tmp;
}
int main() {
	int a = 4, b = 6;
	myswap(a, b);
	cout << "a = " << a << ", b = " << b << endl;
	return 0;
}

 

 

 

 

 

 

 

void myswap(T& a, T& b) {
	T tmp;
	tmp = a;
	a = b;
	b = tmp;
}
class Circle {
	int radius;
public:
	Circle(int radius = 1) { this->radius = radius; }
	int getRadius() { return radius; }
};

int main() {
	//int a = 4, b = 6;
	//myswap(a, b);
	//cout << "a = " << a << ", b = " << b << endl;
	Circle donut(5), pizza(20);
	myswap(donut, pizza);
	cout << "donut반지름 = " << donut.getRadius() << ", ";
	cout << "pizza반지름 = " << pizza.getRadius() << endl;
	return 0;
}

 

 

 

 

 

객체또한 품을 수 있다.

 

 

 

 

 

템플릿의 장점

 

함수 코드를 재사용한다는 점에서 소프트웨어의 생산성과 유용성이 유리하다.

 

 

 

 

 

728x90
반응형