std::vector::erase
will accept either a single iterator denoting the position of the element to be erased, or two iterators denoting a range. But you can't do this:
std::vector<int> vec = { 1, 2, 3 };
vec.erase(1);
Rather you have to do something like
vec.erase( vec.begin()+1 );
This seems like needless extra work--just wondering, is there some reason from the POV of class design why this overload wouldn't be included?
Edit: Chose the most comprehensive answer, all were good. Also as I write this this post has 4 close votes for being 'not constructive'; however, given the quality of the answers I think this was clearly a useful question, certainly for me.