2012-10-01 2 views
4

전 방향 반복기를 사용하여 반복하는 std::multimap이 있습니다.C++지도의 두 번째 요소에서 반복

std::multimap<int,char>::iterator it; 
for(it=map.begin();it!=map.end();++it) { 
    // do something 
} 

이제 첫 번째 요소를 다르게 처리하고지도의 두 번째 요소에서 반복을 시작해야합니다. 어떻게해야합니까?

답변

11
std::multimap<int,char>::iterator it; 

for(it = std::next(map.begin()); it != map.end(); ++it) { 
    // do something 
} 

이것은 C++ 11 전용입니다. <iterator>을 포함해야합니다.

다른 옵션은 덜 매우 명백하지만, :

it = map.begin(); 
++it; 
for(; it != map.end(); ++it) { 
    // do something 
} 

std::advance에서 살펴 보자.

+3

! :) –

2
std::multimap<int,char>::iterator it = map.begin(); 
//treat it here 
++it 
for(;it!=map.end();++it) { 

} 
+0

그냥 힌트였다, 그는 그것을하는 방법에 대해 알지 못하는 것 같았 어 –

1
for(bool First=true, it=map.begin();it!=map.end();++it) { 
    if (First) { do something; First=false; } 
    else { do something else; } 
} 

또는, 당신이 선호하는 경우 :

iterator it=map.begin(); 
if (it!=map.end()) { do something; ++it; } 
for (; it!=map.end(); ++it) { do something } 
1

변경 it = map.begin()it = map.begin(), ++it에 대한-초기화에.

+0

즉, C++ 11이 없다면. 그렇다면 @jrok의 솔루션이 더 좋습니다. –

3

은 짧아 보이는 것 같다

맵이 비어 있지 않은 경우 이것은 단지 안전 물론
it = ++map.begin(); 
관련 문제