C++ Iterate from the second element of a map

11,473

Solution 1

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.

Solution 2

Seems it looks shorter

it = ++map.begin(); 

Solution 3

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

}

Solution 4

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

or, if you prefer:

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

Solution 5

Change it = map.begin() in the for-initializer to it = map.begin(), ++it.

Share:
11,473
ACC
Author by

ACC

Nothing special

Updated on June 09, 2022

Comments

  • ACC
    ACC almost 2 years

    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?