728x90
1. Class Template
- container class 구현시 용이함 (ex. stack, list, vector, set..)
- generalize된 타입에서 동작하는 클래스를 하나로 구현가능하게 해준다.
- 아래 template을 활용한 list 구현 예시를 살펴보자.
- 위 코드는 list의 구성요소인 node를 정의한다. doublely linked list의 모습이다.
- list class가 각 노드의 private member에 접근할 수 있도록 하기 위해 friend선언을 해주었다.
- list를 template으로 구현한 모습이다.
- append 함수만 봐도 list가 관리하는 노드들의 prev_m, next_m을 수정하는 일이 생기기 때문에 friend 선언이 필요했다. (getter, setter없이 바로 접근 가능)
- 이렇게 type에 자유로운 list class 구현이 가능하다.
- 이번에는 tempate으로 stack을 구현한 예시를 살펴보자.
3. Difference between class & function templates
- function template은 인자의 type을 값으로부터 유추할 수 있다.
- 아래 예시에서는 함수의 매개변수에서 T를 사용하지 않기 때문에 함수를 호출할때 <type>을 명시해야 한다.
- class tempate은 <type name>을 지정해서 사용해야 한다.
728x90
반응형
'ComputerScience > C++' 카테고리의 다른 글
C++ STL associative container (0) | 2021.11.11 |
---|---|
C++ STL sequence container (0) | 2021.11.11 |
C++ - split 함수 (0) | 2021.09.28 |
C++ - File stream (0) | 2021.09.23 |
C++ - 2차원 vector 생성자로 초기화 하기 (0) | 2021.08.31 |