c++ - VC++中等键的多重映射顺序

标签 c++ visual-c++ multimap

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/

相关文章:

c++ - 体系结构 x86_64 : 的 undefined symbol

c++ - 将这种原始指针情况变成 unique_ptr?

c++ - 迭代时跳过相同的 multimap 值

c++ - 我应该为我的目的使用哪种数据结构?

c++ - 使用 OpenSSL Qt、C++ 解密 DES

c++ - wxButton - 使用 C++ 改变位置

C++ 需要一些关于 Pig Latin 字符串的建议

algorithm - 如何在任何树数据结构中为单个键存储多个值?

c++ - Boost 堆元素句柄比较和 MSVC 迭代器调试工具

c++ - 使用 AssocQueryString 从 32 位应用程序获取 64 位应用程序命令,但无法正常工作