C++ 프로그래밍

[STL] erase Story... beta

하늘흐늘 2009. 4. 21. 17:46
반응형


STL에서 가장 짜증나는 부분이 erase부분이 아닌가 싶다. erase와 remove의 차이점을 알아야 하고 거기에 몇 개 종류별 iterator의 erase 기법을 알아야 한다. 흠... 암기하기도 그렇고... 꽤나 귀찮은 것들 하나다. 그래서 찾아본 것을 정리하면 아래와 같습당...


map's iterator  erase 방법

// 1. 특정 조건에 따라 제거
map<..., ...> mp;
for(map<..., ...>::iterator i=mp.begin(); i != mp.end(); )
{
	if( {조건문} ) {
	  mp.erase( i++ );    
	} else {
	  ++i;     
	}
}

// 2. 전체 제거
map<..., ...> mp;
for(map<..., ...>::iterator i=mp.begin(); i != mp.end(); )
{
	mp.erase( i++ );    
}

vector's iterator  erase 방법
// 1. 특정 조건에 따라 제거
vector<...> vec;
for(vector<...>::iterator i=vec.begin(); i != vec.end(); )
{
	if( {조건문} ) {
	  i = vec.erase( i );    
	} else {
	  ++i;     
	}
}

// 2. 전체 제거
vector<..., ...> vec;
for(vector<..., ...>::iterator i=vec.begin(); i != vec.end(); )
{
	i = vec.erase( i );    
}

반응형