I want to process elements from a vector for some time. To optimize this I don't want to remove an item when it is processed and I remove all processed items at the end.
vector<Item*>::iterator it;
for(it = items.begin(); it != items.end(); ++it)
{
    DoSomething(*it);
    if(TimeIsUp())
    {
        break;
    }
}
items.erase(items.begin(), it);
Is it safe to use erase when it == items.end()? In documentaion it is said that erase() will erase [first,last) and this should be safe but I want to be sure.
EDIT:
Is it safe to use std::vector.erase(begin(), begin())?
 
     
     
    