전 방향 반복기를 사용하여 반복하는 std::multimap
이 있습니다.C++지도의 두 번째 요소에서 반복
std::multimap<int,char>::iterator it;
for(it=map.begin();it!=map.end();++it) {
// do something
}
이제 첫 번째 요소를 다르게 처리하고지도의 두 번째 요소에서 반복을 시작해야합니다. 어떻게해야합니까?
전 방향 반복기를 사용하여 반복하는 std::multimap
이 있습니다.C++지도의 두 번째 요소에서 반복
std::multimap<int,char>::iterator it;
for(it=map.begin();it!=map.end();++it) {
// do something
}
이제 첫 번째 요소를 다르게 처리하고지도의 두 번째 요소에서 반복을 시작해야합니다. 어떻게해야합니까?
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
에서 살펴 보자.
std::multimap<int,char>::iterator it = map.begin();
//treat it here
++it
for(;it!=map.end();++it) {
}
그냥 힌트였다, 그는 그것을하는 방법에 대해 알지 못하는 것 같았 어 –
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 }
변경 it = map.begin()
을 it = map.begin(), ++it
에 대한-초기화에.
즉, C++ 11이 없다면. 그렇다면 @jrok의 솔루션이 더 좋습니다. –
은 짧아 보이는 것 같다
맵이 비어 있지 않은 경우 이것은 단지 안전 물론it = ++map.begin();
! :) –