컨테이너 원소들을 포인터로 담아 동적할당한 경우 이를 자동으로 해제하는 함수.
map, multimap용은 키값이 있기때문에 함수를 따로 만듬.
[code]
template <typename ElemTy, typename Container>
void freeContainerElems(Container &cont)
{
for(Container::iterator i = cont.begin(); i != cont.end(); i++)
{
ElemTy elem = *i;

delete elem;
}

}

template <typename ElemTy, typename Container>
void freeMapContainerElems(Container &cont)
{
for(Container::iterator i = cont.begin(); i != cont.end(); i++)
{
ElemTy elem = (*i).second;

delete elem;
}

}[/code]

아래와 같이 사용한다.
[code]
// clear textures
freeMapContainerElems<Texture *>(m_textureMaps);

// clear bitmaps
freeContainerElems<Bitmap *>(m_bitmaps);[/code]

원소들이 포인터가 아닌경우는 컴파일 에러가 난다.
[code]
vector<int> v;

freeContainerElems<int>(v);

// error C2541: 'delete' : cannot delete objects that are not pointers
[/code]
blog: http://ljh131.tistory.com
email: ljh131@gmail.com