1. vector, deque, list 에서의 erase 사용 예:
erase() 할 경우 erase 의 리턴값에 pos 이 있으므로 이 값을 기준으로 다음 pos 을 구하면 됩니다
deque<DATA>::iterator pos = begin();
while (pos != end())
{
if (pos->m_nKey == nID)
{
pos = erase(pos);
}
else
pos++;
}
2. set, map 에서의 erase 방법
map 의 erase 는 vector 에서 처럼 pos 를 리턴하지 않기 때문에 아래처럼 좀 복잡한 방법을 써야 합니다.
for (pos = map.begin(); pos != map.end(); )
{
if (pos->second == value)
map.erase(pos++);
else
++pos;
}
3. reverse iterator 사용예
iterator → reverse_iterator
begin → rbegin
end → rend
식으로 변경해서 사용하면 끝~
map<data, value>::reverse_iterator it;
for (it = m_mapData.rbegin(); it != m_mapData.rend(); ++it)
{
...
}
4. mulimap iterator 사용예
lower_bound 와 upper_bound 를 통해 iterator navigation 하기
multimap<string, string> multiData;
multimap<string, string>::iterator it;
/* some code here */
multiData.insert(make_pair("abc", "111"));
multiData.insert(make_pair("abc", "222"));
multiData.insert(make_pair("abc", "333"));
multiData.insert(make_pair("def", "111"));
string sKey = "abc";
for (it = multiData.lower_bound(sKey);
it != multiData.upper_bound(sKey); ++it)
{
/* some code here */
}
'개발' 카테고리의 다른 글
디버그 이야기 - 비정상종료 (6) | 2007.08.21 |
---|---|
개발자를 위한 개발자에 의한 문서 만들기 (9) | 2007.07.22 |
파일을 숨기는 방법 - ezRename (6) | 2007.06.27 |
안전하고, 좋은 냄새가 나는 C++ 코드 만들기 (5) | 2007.05.30 |
Adobe Flex2 처음 맛보기 - Flex 로 만든 계산기 (1) | 2007.04.14 |
MFC, STL 간단 사용팁 (0) | 2007.03.23 |
댓글