In C++03 you are not guaranteed that insert
and erase
preserve relative ordering. However, this is changed in C++0x:
n3092, §23.2.4/4: An associative container supports unique keys if it may contain at most one element for each key. Otherwise, it supports equivalent keys. The set and map classes support unique keys; the multiset and multimap classes support equivalent keys. For multiset and multimap, insert and erase preserve the relative ordering of equivalent elements. Emphasis mine.
This is discussed in this defect report. This page is the collection of comments on the issue, it's well-written and quite fleshed-out. (I very much recommend reading this one over the previous "overview" link.)
From that comment page you'll find a comparison of current implementations, so you can check if the implementations you intend to use follow what you expect.
I can't think of a way to force the ordering you want off the top of my head. :/
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…