I have a question with sorting of sets in the bimap framework. I have
a bimap declared thus:
//Boost Bimap requires this predicate struct setup
struct
AreDecalIDsInCorrectRenderOrderStruct
{
bool operator()
(const short nDecalID1, const short nDecalID2) const
{
//Do
comparison
}
};
typedef
boost::bimap<boost::bimaps::unordered_multiset_of<int>,
boost::bimaps::set_of<short, AreDecalIDsInCorrectRenderOrderStruct>>
intMultisetShortSetBimap;
intMultisetShortSetBimap
m_mStructureIDToLinkedDecalID;
The problem is this isn't working as I expected. I'm expecting that
when I insert elements using:
m_mStructureIDToLinkedDecalID.insert(intMultisetShortSetBimap
::value_type(nStructureID, nDecalID));
and then later retrieve them using:
pair<intMultisetShortSetBimap ::left_const_iterator,
intMultisetShortSetBimap ::left_const_iterator> equalRange
=
m_mStructureIDToLinkedDecalID.left.equal_range(nStructureID);
that the retrieved elements with equal range would be sorted according to
the predicate I used. But they aren't. Instead their order is
dependent on the order they were inserted. I've verified that my predicate
is being called on insertions.
Am I misunderstanding the purpose of passing a sorting predicate to a
set_of declaration? If so, what does the sorting actually do and is there
a way to get boost::bimap to do what I want?
Thanks for any help.
-Curtis
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
This e-mail and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom
they are addressed.
If you have received this e-mail in error please notify the
originator of the message. This footer also confirms that this
e-mail message has been scanned for the presence of computer viruses.
Any views expressed in this message are those of the individual
sender, except where the sender specifies and with authority,
states them to be the views of Indra Systems, Inc. |