정말 천재이다. 세상에는 천재가 너무많아 ㅡ,ㅡ)
멀티 스레드 일때는 Iterator 구간에서 동기화를 꼭 해야 한다.
안하면 메모리 억세스 오류 발생하고 STL 버그로 생각한다.
그러나 경헙상 STL 버그는 거의 없고 사용하는 쪽에서 잘못
사용한 것이다. 즉, 내가 프로그램 잘못 한것이다. (ㅠ,ㅠ)
map은 associative 콜렉션을 참조하 된다.
순차형(sequential) 콜렉션
typedef list<OBJECT*> OBJECTS; OBJECTS objects; ...
for (OBJECTS::iterator itr(objects.begin()); itr != object.end(); )
{
OBJECT* pObject = *itr;
if (should_delete(pObject))
{
itr = objects.erase(itr);
delete pObject;
}
else itr++;
}
연관형(associative) 콜렉션
typdef map<int, OBJECT*> OBJECTS; OBJECTS objects; ...
for (OBJECTS::iterator itr(objects.begin()); itr != object.end(); )
{
OBJECT* pObject = itr->second;
if (should_delete(pObject))
{
objects.erase(itr++);
delete pObject;
}
else itr++;
}
출처 : Effective STL
댓글
댓글 쓰기