일부분을 변경하여 몇 번이라도 사용할 수 있는 문서 포맷이나 데이터를 말함
템플릿 함수는 호출하는 족에서 지정한 인수의 형에 맞춰 함수 내에서 사용하는 변수의 형을 바꿀 수 있다.
c언어의 경우 같은 일ㅇ르 하는 함수라도 인수의 형이 다를 경우 별개로 함수로 만들어야 했다.(아니면 #define으로 사용)
그러나 #define 매크로는 한 줄로 기술해야 하기 때문에, 기술할 내용이 여러 행에 걸칠 경우엔 \ 기호를 사용하여 행을 연결해 주어야 했으므로 조금 불편했다.
예
#define Swap(T, a, b) \
{ T n = a ; \
a = b ; \
b = n; }
int main(){
int aa = 1, bb = 2;
SwapT(int ,aa,bb);
//우어와 신박하네
암튼
c++의 경우 템플릿 함수의 기능을 사용함으로서, #define 매크로를 사용하지 않아도 복수에 형에 대흥하는 함수를 작성할 수 있다.
(연산자의 처리내용을 정하자...여기서 연산자 오버로딩 하나?)
템플릿 함수
template <class T> //T는 템플릿 인수 T 부분이 int, double 등으로 치환됨
T GetMax(T a, T b)
{
T buf; //함수의 인수, 반환값에 템플릿 인수를 사용
}
사용법
int n1 = 100, n2 = 200, ret;
ret = GetMax(n1,n2); //여기서 템플릿 인수가 int로 치환됨
오오..이 책으로 공부하니깐 쉽게 이해가 되네..이런 템플릿을 이용하면 여러 타입에 적용될 수 있는 함수가 만들어지는구먼
템플릿 클래스
template <class T>
class Rectangle{
public:
T GetRight() { //아직 형이 확정되지 않았기 때문에, 임시로 T 형으로 만듬
return letf + width;
}
...
T left, top,width,height;
};
Rectangle<int> rect;
Rectangle<double> rect;
템플릿 인수가 2개 이상 있을 경우, 복수로 지정 가능
template<class T1, class T2>
class Rectangle{
};
Rectangle<int, char> rect;
표준 템플릿 라이브러리(STL : standard template library)
배열 vector 클래스
리스트 list 클래스
큐 queue 클래스
스택 stack 클래스
vector 클래스의 예
배열로 사용할 수 있는 vector 클래스는 메모리가 부족한 경우에 자동적으로 메모리를 확보함. 그 때문에 일반 배열과는 달리 사이즈에 신경을 쓰지 않아도 됩니다. #include <vector> //vector 클래스를 사용하는데 필요 #include <iostream> using namespace std; int main() { vector<int> v1; //int 형을 저장하는 vector 객체 생성 v1.push_back(10); //배열 마지막에 데이타 - 10을 추가 v1.push_back(11); cout<<"요소의 개수 : " << (int)v1.size() << endl; //요소의 갯수를 출력 cout<<"v1[0] = " << v1[0] << endl; //일반 배열과 동일하게 접근할 수 있다. cout<<"v1[1] = "<<v1[1] << endl; return 0; } |
STL(2)...반복자(iterator)
STL 각 컨테이너 오브젝트에 있는 iterator라는 클래스의 오브젝트를 사용하면, 컨테이너 내부의 데이터에 동일한 방법으로 접근할 수 있습니다. iterator 오브젝트는 컨테이너 오브젝트 내부의 한 요소를 가리킵니다.
연산자
대입 연산자의 오버로딩
캐스트 연산자
assert 매크로 기술
'컴퓨터 과학 & 영상처리 관련 > C / C++' 카테고리의 다른 글
cpp 예약어들(keywords)(c++11 포함) (0) | 2012.07.16 |
---|---|
cpp 캐스트 연산자 (0) | 2012.07.10 |
소멸자를 가상 함수로(상속할 가능성이 있는 클래스의 소멸자를) (0) | 2012.07.10 |
오브젝트의 배열을 초기화 (0) | 2012.07.10 |
객체(오브젝트)를 멤버로 가지는 클래스, 함수옆에 : i(10) 이런거(객체 또는 변수 초기화임) (0) | 2012.07.10 |