我应该使用哪些键值数据结构?按值快速检索,并通过密钥快速检索

时间:2013-12-10 19:33:14

标签: java c++ data-structures

我有一组数据对:(键,值)。 它们的键是唯一的,值(不会有两个相等的值,也不会有两个相等的键)。像这样......

dataStructure = {"ph", 0}, {"f", 1}, {"o", 2}, {"th", 3} ...

(索引是任意的,但必须是可访问的)

是否有任何数据结构(有效地)允许我在给定值的情况下检索项目的键?像这样: dataStructure.getByValue("ph") -> 0dataStructure.getByKey(0) -> "ph"

我一直在阅读关于hashmaps的内容,但这不是我正在寻找的结构:hashmaps是非唯一值项目,所以我无法检索给定值的键。

我想用它作为编码器,“photho”将被编入0230,这将被再次解码为“photho”。

我想知道数据结构的名称......这与语言无关......

2 个答案:

答案 0 :(得分:4)

Boost. bimap应该适合你。

  

Boost.Bimap是C ++的双向地图库。随着Boost.Bimap   您可以创建可以使用这两种类型的关联容器   作为关键。 bimap可以被认为是a的组合   std :: map和std :: map。

答案 1 :(得分:1)

使用两个maps。将它们组合成一个类,这样就可以在同一个对象上使用两个get方法。