C++ Iterate from the second element of a map

Abhishek Chanda picture Abhishek Chanda · Oct 1, 2012 · Viewed 9.7k times · Source

I have a std::multimap on which I am iterating using a forward iterator.

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

Now I need to treat the first element differently and start iterating from the second element of the map. How do I do that?

Answer

jrok picture jrok · Oct 1, 2012
std::multimap<int,char>::iterator it;

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

This is C++11 only. You'll need to include <iterator>.

The other option is obvious, but less pretty:

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

Take a look at std::advance, too.