Can I increment an iterator by just adding a number?

c++, iterator

Solution

It works if the iterator is a random access iterator, which vector's iterators are (see reference). The STL function `std::advance` can be used to advance a generic iterator, but since it doesn't return the iterator, I tend use + if available because it looks cleaner.

C++11 note

Now there is `std::next` and `std::prev`, which do return the iterator, so if you are working in template land you can use them to advance a generic iterator and still have clean code.

Problem

Can I do normal computations with iterators, i.e. just increment it by adding a number? As an example, if I want to remove the element `vec[3]`, can I just do this: ``` std::vector<int> vec; for(int i = 0; i < 5; ++i){ vec.push_back(i); } vec.erase(vec.begin() + 3); // removes vec[3] element ``` It works for me (g++), but I'm not sure if it is guaranteed to work.

Original source

Related problems