C++ VC+中相等键的多重映射顺序+;

C++ VC+中相等键的多重映射顺序+;,c++,visual-c++,multimap,C++,Visual C++,Multimap,关于多重映射是否保留相同键的插入顺序的问题已经被问了很多次,我认为很明显,标准上说它没有 无论如何,我需要一个结构,在这个结构上我可以按键查找,并按插入顺序对相同的键进行迭代。这意味着我不能使用复合键,因为我怎么能按键查找 那么,VC++是否保持多重贴图相同键的插入顺序?(或者我会在哪里查找Microsofts的实现,因为我找不到它?)?boost::多索引 如果我不只是插入而不插入位置,而是始终首先查找所需的位置,并将相同键的最后一个元素作为位置建议传递(例如,使用等距的第二个迭代器),该怎么

关于多重映射是否保留相同键的插入顺序的问题已经被问了很多次,我认为很明显,标准上说它没有

无论如何,我需要一个结构,在这个结构上我可以按键查找,并按插入顺序对相同的键进行迭代。这意味着我不能使用复合键,因为我怎么能按键查找

那么,VC++是否保持多重贴图相同键的插入顺序?(或者我会在哪里查找Microsofts的实现,因为我找不到它?)?boost::多索引

如果我不只是插入而不插入位置,而是始终首先查找所需的位置,并将相同键的最后一个元素作为位置建议传递(例如,使用等距的第二个迭代器),该怎么办?这可能是可行的(我只关心g++和Windows编译器),我猜,因为它可以与该元素进行比较,然后是下一个,然后高兴地插入?或者它不能,因为树结构可能意味着它实际上可能不会对相同的键进行神奇的叶子切换,如果错误的孩子是自由插入的


顺便说一句,我从来都不理解那些建议使用两种结构的答案。这肯定会使删除变得非常昂贵吗?

std::map
满足您的所有要求。

您确实可以使用复合键。只需使用
下限
进行查找。
但不确定这是否解决了您的主要问题。

最终草案规定必须保留等效元素的顺序。不知道是哪个编译器版本使用了它。只需使用@Sjoerd所说的
map
,或者
map
,如果您需要删除单个键中的特定值。