stl — C ++ Итерация из второго элемента карты

у меня есть std::multimap на котором я итерирую, используя прямой итератор.

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

Теперь мне нужно по-другому относиться к первому элементу и начать итерацию со второго элемента карты. Как я могу это сделать?

5

Решение

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, тоже.

11

Другие решения

Кажется, выглядит короче

it = ++map.begin();
3

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

}
2

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,

1
По вопросам рекламы [email protected]