C++ 템플릿 활용 예제 (컨테이너 클래스 Bag)

2022. 4. 12. 01:41c++/기초

Template Functions

클래스와 함수를 재사용하는 것에 도움을 줌.

예를 들어 아래와 같이 선택정렬을 구현했다고 가정하자.

매개변수로 int 밖에 받지 못하고 그때 그때 수정해야할 것이다.

위와 같이 template을 정의해주고 데이터 타입 T를 정의해놓는다면 개발시간과 코드 공간을 절약할 수 있음.

template <class T> 와 template <typename T>는 차이가 없다고 한다.

 

int와 float를 받아도 인자에 따라서 알아서 정의 됨.

유저가 정의한 데이터 타입의 경우에는 개별적으로 정의해야함.

등 여러 주의해야할 상황이 있음.

 

템플릿을 사용해서 컨테이너 클래스를 구현

container class

1. data object를 저장하고 유지하는 자료 구조를 구현한 클래스

2. 각 객체들은 컨테이너 클래스에서 추가되거나 삭제될 수 있음.

 

Bag

우리가 구현할 컨테이너 클래스.

여러개의 같은 요소를 담을 수 있다.

삭제 작업을 수행할 때 요소의 위치나 어떤 요소가 제거되었는지에 대해 신경 쓰지 않는다.

operation :

insert(해당 요소를 배열의 처음으로 사용할 수 있는 공간에 저장/ 꽉 찬 경우 array를 두배로 늘려줌)

delete(가운데 있는 요소를 제거/오른쪽의 모든 요소는 한 자리 왼쪽으로 이동)

pop(삭제된 요소를 반환함)

 

템플릿을 사용해서 구현해보자

어떤 데이터 타입의 객체든 저장될 수 있다.

Bag 클래스와 멤버들을 저장하기 전에 아래와 같이 template를 정의해 주자.

 

아래와 같이 여러 데이터 형식으로 인스턴스화할 수 있다.

반응형