원하는 타입을 넣으면 코드를 찍어내는 일종의 틀
template <typename T>
T add(T &a, T &b) { return a + b; }
add(1, 2)
와 같이 사용하면 컴파일러가 알아서 add<int>(a, b)
로 인스턴스화 함수 템플릿 구현
swap()
: 두 인자를 스왑. 리턴값 없음min()
: 두 인자를 비교해서 작은 값을 리턴. 같은 경우 두 번째 값을 리턴max()
: 두 인자를 비교해서 큰 값을 리턴. 같은 경우 두 번째 값을 리턴템플릿은 헤더에 정의되어야 함
int main(void) {
int a = 2;
int b = 3;
::swap( a, b );
std::cout << "a = " << a << ", b = " << b << std::endl;
std::cout << "min( a, b ) = " << ::min( a, b ) << std::endl;
std::cout << "max( a, b ) = " << ::max( a, b ) << std::endl;
std::string c = "chaine1";
std::string d = "chaine2";
::swap(c, d);
std::cout << "c = " << c << ", d = " << d << std::endl;
std::cout << "min( c, d ) = " << ::min( c, d ) << std::endl;
std::cout << "max( c, d ) = " << ::max( c, d ) << std::endl;
return (0);
}
👉 결과
a = 3, b = 2
min(a, b) = 2
max(a, b) = 3
c = chaine2, d = chaine1
min(c, d) = chaine1
max(c, d) = chaine2
iter()
아무것도 리턴하지 않고 3개의 파라미터를 받는 함수
https://ansohxxn.github.io/cpp/chapter13-2/
클래스를 만드는 틀
template <typename T>
class Data {
private:
T data_;
public:
Data(T dt);
T get_data();
};
int main(void) {
Data<int> data(10);
std::cout << data.get_data() << std::endl;
return (0);
}
Array
n
을 받는 생성자: n
개의 요소를 갖는 배열 생성int *a = new int();
를 실행하고 *a
를 출력new[]
연산자 사용[]
로 각 요소에 접근할 수 있어야 함 (첨자 연산자 오버로딩)std::exception
던지기size()
: 배열의 길이 리턴