我需要一个关联容器,它让我通过一个字符串索引一个特定的对象,但这也保持了插入的顺序,所以我可以通过它的名字查找一个特定的对象,或者只是迭代它并按照我插入的相同顺序检索对象他们.
我认为链接列表和哈希映射的这种混合应该可以完成这项工作,但在我尝试使用之前std::tr1::unordered_map
认为它以我所描述的方式工作之前,但事实并非如此.那么有人可以解释一下我的意思和行为unordered_map
吗?
@wesc:我确定std :: map是由STL实现的,而我确定std :: hash_map不在STL中(我认为旧版本的Visual Studio将它放在名为stdext的命名空间中).
@cristopher:所以,如果我做对了,差异在于实现(以及性能),而不是它在外部的行为方式.
您已经询问了为什么制作Boost :: MultiIndex的规范原因:列出按键快速查找的插入顺序. Boost MultiIndex教程:列出快速查找
您需要以两种方式索引关联容器:
广告订单
字符串比较
尝试Boost.MultiIndex或Boost.Intrusive.我没有用这种方式,但我认为这是可能的.