1

多重映射是否保留相同键的插入顺序的问题已被多次询问,我认为很明显标准说它没有。尽管显然 C++0x 有一段时间说它做了,然后又没有了?

无论如何,我需要一个可以按键查找的结构,并按插入顺序迭代它以获得相同的键。这意味着我不能使用复合键,那我怎么能按键查找呢?

那么,VC++ 是否维护多图相同键的插入顺序?(或者我会在哪里查找微软的实现,因为我找不到它?)如果没有,最好的选择是什么?提升::多索引?

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

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

4

2 回答 2

3

std::map<std::vector<T> >满足您的所有要求。

于 2011-07-16T23:18:38.140 回答
0

您确实可以使用复合键。仅lower_bound用于查找。不确定这是否能解决您的主要问题。

于 2011-07-16T23:27:10.630 回答