我不明白std :: tr1 :: unordered_map

mar*_*jno 4 c++ unordered-map tr1

我需要一个关联容器,它让我通过一个字符串索引一个特定的对象,但这也保持了插入的顺序,所以我可以通过它的名字查找一个特定的对象,或者只是迭代它并按照我插入的相同顺序检索对象他们.

我认为链接列表和哈希映射的这种混合应该可以完成这项工作,但在我尝试使用之前std::tr1::unordered_map认为它以我所描述的方式工作之前,但事实并非如此.那么有人可以解释一下我的意思和行为unordered_map吗?


@wesc:我确定std :: map是由STL实现的,而我确定std :: hash_map不在STL中(我认为旧版本的Visual Studio将它放在名为stdext的命名空间中).

@cristopher:所以,如果我做对了,差异在于实现(以及性能),而不是它在外部的行为方式.

小智 17

您已经询问了为什么制作Boost :: MultiIndex的规范原因:列出按键快速查找的插入顺序. Boost MultiIndex教程:列出快速查找


Ada*_*itz 7

您需要以两种方式索引关联容器:

  • 广告订单
  • 字符串比较

尝试Boost.MultiIndexBoost.Intrusive.我没有用这种方式,但我认为这是可能的.