기본 템플릿 인자

반응형


함수에서 기본인자값을 정해주는것과 비슷하게 템플릿의 데이터형도
디폴트로 미리 정의해 줄 수 있다.
이를 기본 템플릿 인자라고 한다.
그리고 언제나 ">"을 쓸때는 ">>" 을 주의해야 한다.
괄호가 두개 겹쳐있는것이 잘못하여 시프트연산자로 인식될 수도 있기 때문이다.


#include <vector>
#include <stdexcept>

template <typename T, typename CONT = std::vector<T> >
class Stack
{
private:
 CONT vecElem;

public:
 void push(T const&);
 void pop();
 T top() const;
 bool empty() const
 {
  return vecElem.empty();
 }
};

// 두개의 템플릿 파라미터를 가지므로 멤버함수정의시 모두 명시
template <typename T, typename CONT>
void Stack<T, CONT>::push(T const& elem)
{
 vecElem.push_back(elem);
}

template <typename T, typename CONT>
void Stack<T, CONT>::pop()
{
 if(vecElem.empty())
  throw std::out_of_range("Stack pop");

 vecElem.pop_back();
}

template <typename T, typename CONT>
T Stack<T, CONT>::top() const
{
 if(vecElem.empty())
  throw std::out_of_range("Stack pop");

 return vecElem.back();
}

'Study > Template' 카테고리의 다른 글

템플릿 템플릿 파라미터  (0) 2010.06.30
데이터형이 아닌 클래스 템플릿 파라미터  (2) 2010.06.25
클래스 템플릿 특수화  (0) 2010.06.24
클래스 템플릿  (0) 2010.06.18
오버로딩 (함수 템플릿)  (0) 2010.06.17
TAGS.

Comments