컴파일 단계에서 타입을 결정짓는 기능입니다.
타입이 다양하게 바뀔 수 있습니다.
아래의 형태로 사용가능합니다.
template <typename T>
물론 여러개를 지정해도 됩니다.
template <typename T1, typename T2>
아래와 같이 작성하면, 클래스안에서도 사용가능 합니다.
template <class T>
함수를 호출시에는 이렇게 쓰입니다.
함수명<int or char or ect..>();
- 함수
#include<iostream>
using namespace std;
template<typename t>
void out() {
cout << typeid(t).name() << endl;
}
int main() {
out<int>();
return 0;
}
- 함수 활용
#include<iostream>
using namespace std;
template<typename t>
void out(t data) {
cout << typeid(t).name() << endl;
cout << data << endl;
}
int main() {
out(10);
out(3.14);
out("a");
return 0;
}
- 클래스
#include<iostream>
using namespace std;
template<typename t>
void out(t data) {
cout << typeid(t).name() << endl;
cout << data << endl;
}
class test
{
public:
test();
~test();
private:
};
int main() {
out<test>();
return 0;
}
- 열거체
#include<iostream>
using namespace std;
template<typename t>
void out() {
cout << typeid(t).name() << endl;
}
enum enum_test
{
a,
b,
c
};
int main() {
out<enum_test>();
return 0;
}
표준 템플릿 라이브러리 중의 하나인 템플릿 클래스입니다.
어떤 타입이라도 저장할 수 있지만, 한 번에 한 타입만 저장이 가능합니다.
요소에 접근하거나, 앞 또는 뒤에 요소를 추가하거나 삭제할 수 있고, 크기를 알 수 있는 멤버 함수를 제공하고도 있습니다.
자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 구조로 저장하는 형식을 말합니다.
나중에 집어 넣은 데이터가 먼저 나오는 스택과는 반대되는 개념입니다.
큐와 반대되는 개념으로, 제한적으로 접근할 수 있는 나열 구조입니다.
접근 방법은 언제나 목록의 끝에서만 일어납니다.
(본 내용은 챕터22에서 vector, queue, stack 실습을 진행합니다.)
표준 템플릿 라이브러리라고 하며, 일반적으로 자료구조와 같은 알고리즘을 구현해 놓은 라이브러리의 모음입니다.
(본 내용은 챕터22에서 자세히 설명합니다.)
- auto_ptr (c++17에서 사라졌습니다. 쓰지마시기 바랍니다.)
- unique_ptr
- shared_ptr
- weak_ptr
- 자동 청소
- 자동 초기화
(본 내용은 스터디 현장에서 실습을 진행하지 않습니다.)
-
과제-1 : 템플릿으로 함수 호출시 오버로딩을 구현하기
-
과제-2 : 두 수를 교환하면서 변수 타입을 같이 출력하는 swap()함수를 작성하기
-
과제-3 : STL로 linkedlist를 구현하여 스터디에서 진행했던 linked list 코드와 차이점 알아보기
힌트 :
#include <list>