< TEMPLATE >
- 함수나 클래스가 개별적으로 다시 작성하지 않고도 각기 다른 수많은 자료형에서 범용적으로 사용 가능하도록 제작된 C++ 프로그래밍 언어의 기능.
- 템플릿의 종류에는 크게 함수 템플릿과 클래스 템플릿이 있음.
1) 함수 템플릿
- 여러 다른 자료형에 대하여 같은 역할을 하는 하나의 함수 계열을 하나의 템플릿으로 표현.
template <class identifier, ...> function_declaration;
template <typename identifier, ...> function_declaration;
2) 클래스 템플릿
- 클래스를 템플릿 변수에 따라 생성할 수 있게 하는 기능.
- 컨테이너 용도로 많이 쓰임.
template <class identifier, ...> class_declaration {};
template <typename identifier, ...> class_declaration {};
< 함수 템플릿 예제 >
1. RELEASE VECTOR
1) 정의
template <class A>
static const void RemoveVector(std::vector<A *> * pVec);
2) 구현
template <class A>
const void CUtil::RemoveVector( std::vector<A *> * pVec )
{
if (pVec == NULL)
return;
if (!pVec->empty())
{
for (int i = 0; i < (int)pVec->size(); i++)
{
A * pInfo = (*pVec)[i];
if (pInfo != NULL)
delete pInfo;
pInfo = NULL;
}
pVec->clear();
}
}
1. RELEASE MAP
1) 정의
template <class A, class B>
static const void RemoveMap(std::map<A, B *> * pMap);
2) 구현
template <class A, class B>
const void CUtil::RemoveMap( std::map<A, B *> * pMap )
{
if (pMap == NULL)
return ;
if (!pMap->empty())
{
std::map<A, B *>::iterator it = pMap->begin();
while (it != pMap->end())
{
B * pInfo = (*it).second;
if (pInfo != NULL)
delete pInfo;
pInfo = NULL;
it = (*pMap).erase(it);
}
pMap->clear();
}
}
'개발 > C&C++' 카테고리의 다른 글
[C/C++]Packet Parser 클래스(Similar. String...) (0) | 2022.10.21 |
---|---|
[Windows] Keyboard - key code & value (0) | 2021.11.08 |
[API] PROCESS 권한 확인 및 변경 - OpenProcessToken / LookupPrivilegeValue / AdjustTokenPrivileges (0) | 2017.03.14 |
[API] ShellExecute Function (0) | 2017.03.10 |
[MFC] CDaoFieldInfo / Column or Field 의 DataType (0) | 2017.03.08 |