STL - vector
- Library/STL
- 2011. 4. 19.
이전에 list, map, multimap 에서 삭제 하던거랑 살짝 틀리다.
젠장할...시간낭비를 했다.
vector 은 잘 사용하지도 않는데...라고 주절주절..그만 떠들고 정리하고 얼른..집중하자
내가 정리하고 하는 부분만 정리하자!
STL 에서 list, map, multimap 를 자주쓰는데..(내가!)
삭제 할때, 왜 vector 은 위의 3개와 틀린지 모르겠다. 그냥 정리해둔다. !
STL - list, map, multimap 의 삭제
void CUserParty::DeleteDataAll()
{
/*
CClientUser *del = NULL;
m_iterator = m_MultiMap.begin();
while( m_iterator != m_MultiMap.end() )
{
del = m_iterator->second;
m_MultiMap.erase( m_iterator++ );
delete del;
}
m_MultiMap.clear();
*/
}
삭제하는 루틴은 저런방법을 이용한다.
참고로 아래의 형태이니깐, 응용이 가능하다고 생각함!
typedef multimap< int, CClientUser*> mMAPUSER;
typedef mMAPUSER::iterator mMAPUSERITERATOR;
그리고 이제 문제가 되었던 vector은 어떠하신가 보자.
vector 은 아래와 같이 선언함!
typedef struct _jd_index
{
vector<int> Indexlist;
}ST_JD_INDEX;
typedef vector<ST_JD_INDEX*> JACCARDDISTANCE;
추가할 때는
ST_JD_INDEX *index = new ST_JD_INDEX;
index->Indexlist.push_back(i);
m_JaccardDistanceList.push_back( index );
읽고 쓸 때
// 하나만 검사!( 다 똑같기 때문에)m_JaccardDistanceList[j]->Indexlist.push_back(i);
int index = m_JaccardDistanceList[j]->Indexlist[0];
m_JaccardDistanceList[j]->Indexlist.push_back(i);
삭제 할 때
JACCARDDISTANCE::iterator iterator = m_JaccardDistanceList.begin();
size = m_JaccardDistanceList.size();
while( iterator != m_JaccardDistanceList.end() )
{
del = *iterator;
delete del;
iterator = m_JaccardDistanceList.erase(iterator);
}
m_JaccardCount = 0;
m_JaccardDistanceList.clear();
삭제 할때, list, map, multimap, 그리고 vector 하고의 차이점....인가?
뭐..무튼 삭제 할때 방법이 틀리니깐 정리해두자.
'Library > STL' 카테고리의 다른 글
[STL] vector, list (0) | 2013.04.23 |
---|