I have a std::map, which I want to iterate over, starting at the second entry.
I can workaround this fine, but I\'m confused about why the \"obvious\" s
std::map is of the iterator-class bidirectional iterator. Those only have ++ and -- operators. +N and [] is only available for random access iterators (which can be found in e.g. std::vector).
The reason behind this is that adding N to a random access iterator is constant time (e.g. add N*sizeof(T) to a T*), whereas doing the same thing for a bidirectional iterator would require applying ++ N times.
What you can do though (if you have C++11) is:
std::map::const_iterator pIterTwo = std::next(pSomeMap.begin(),1);
which does the right thing for all iterator types.