The standards don't specify a behaviour if you decrement a begin iterator or increment an end iterator. In other words, the behaviour is undefined. Possibilities include: staying at begin(), changing to end(), giving an invalid iterator, throwing SIGABRT or something similar. Just don't do it.