I have a std::multiset which stores elements of class A. I have provided my own implementation of operator< for this class. My question is if I insert two equivalent objects into this multiset is their order guaranteed? For example, first I insert a object a1 into the set and then I insert an equivalent object a2 into this set. Can I expect the a1 to come before a2 when I iterate through the set? If no, is there any way to achieve this using multiset?
I have a std::multiset which stores elements of class A . I have provided
Share
In C++03 you are not guaranteed that
insertanderasepreserve relative ordering. However, this is changed in C++0x: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. :/