본문 바로가기

ComputerScience/C++

C++ - Template

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