클래스 템플릿

클래스 템플릿

함수 템플릿과 마찬가지로 클래스도 템플릿으로 정의가 가능하다.

Stack 클래스

스택은 LIFO(Last in first out) 구조로 되어 있는 자료구조 이다.

속성

설명

T* buf

템플릿 자료형 데이터를 저장할 공간

int top

현재 데이터의 위치를 기억

int size

스택에 보관할 수 있는 데이터의 최대개수

메서드

설명

Stack()

생성자

~Stack()

소멸자

push()

데이터 하나를 저장

pop()

데이터 하나를 꺼내옴

Stack.h

#ifndef __STACK_H__
#define __STACK_H__

template <typename T>
class Stack {
  T* buf;
  int top;
  int size;
public:
  Stack(int size);
  virtual ~Stack();
  void push(T a);
  T pop();
};

#endif

Stack.cpp

main.cpp

템플릿 클래스의 파일 구분

예제를 실행하면 링킹과정에서 오류가 발생한다.

템플릿 클래스는 일반적으로 하나의 헤더파일에 모든 멤버함수의 정의를 모두 작성한다.

그것이 싫다면 main.cpp에 다음과 같이 include문을 추가 한다.

Linked list 템플릿

연결리스트는 노드들의 포인터로 연속적으로 연결되어 순차적으로 접근 할 수 있는 자료구조 이다.

Node 템플릿 클래스

Node 클래스는 데이터를 저장하고 다음 노드에 대한 정보를 가지고 있다. Node.h

List 템플릿 클래스

List 클래스는 더미노드 기반의 단순연결리스트를 구현하였다.

속성

설명

Node<T>* head

더미노드

Node<T>* cur

현재 가리키는 노드 위치

Node<T>* cur

이전 노드 위치

int count

Node의 개수

메서드

설명

List()

생성자

~List()

소멸자

insert()

연결리스트의 앞에 Node를 삽입

first()

연결리스트의 첫번째 Node로 이동

next()

다음 Node로 이동

remove()

Node 제거

getCount()

Node의 개수 반환

main.cpp

사용자 정의 객체를 저장하는 리스트

이전에 만들었었던 String 클래스를 연결리스트에 사용해 보자.

String Class 바로가기

main.cpp

Last updated