multimap 是否保留相同键的插入顺序的问题已经被问过很多次,我认为很明显标准说它没有。 Although apparently C++0x for a while said it did and then didn't again?
无论如何,我需要一个结构,我可以在该结构上按键查找,并按相同键的插入顺序对其进行迭代。这意味着我不能使用复合键,那我怎么能通过键查找呢?
那么,VC++ 是否维护多重映射相同键的插入顺序? (或者我应该在哪里查找 Microsoft 的实现,因为我找不到它?)如果找不到最好的选择是什么? boost::multiIndex?
如果我不只是不带位置地插入,而是总是先查找所需的位置,然后传递相同键的最后一个元素作为位置建议(例如,使用 equal_range 的第二个迭代器)怎么办?这可能行得通(我只关心 g++ 和 Windows 编译器)我猜是因为它可以与那个元素进行比较,然后是下一个,然后很高兴并插入?或者它不能,因为树结构可能意味着它实际上可能不会对相同的键进行魔法叶子切换,如果错误的 child 有空,就把它插入那里?
顺便说一句,我从来不理解建议使用两种结构的答案。这肯定会使删除变得非常昂贵吗?
最佳答案
std::map<std::vector<T> >
满足您的所有要求。
关于c++ - VC++中等键的多重映射顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720780/