у меня есть std::multimap
на котором я итерирую, используя прямой итератор.
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
, тоже.
Кажется, выглядит короче
it = ++map.begin();
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
,