我有一组数据对:(键,值)。 它们的键是唯一的,值(不会有两个相等的值,也不会有两个相等的键)。像这样......
dataStructure = {"ph", 0}, {"f", 1}, {"o", 2}, {"th", 3} ...
(索引是任意的,但必须是可访问的)
是否有任何数据结构(有效地)允许我在给定值的情况下检索项目的键?像这样:
dataStructure.getByValue("ph") -> 0
和dataStructure.getByKey(0) -> "ph"
我一直在阅读关于hashmaps的内容,但这不是我正在寻找的结构:hashmaps是非唯一值项目,所以我无法检索给定值的键。
我想用它作为编码器,“photho”将被编入0230,这将被再次解码为“photho”。
我想知道数据结构的名称......这与语言无关......
答案 0 :(得分:4)
Boost. bimap应该适合你。
Boost.Bimap是C ++的双向地图库。随着Boost.Bimap 您可以创建可以使用这两种类型的关联容器 作为关键。 bimap可以被认为是a的组合 std :: map和std :: map。
答案 1 :(得分:1)
使用两个maps。将它们组合成一个类,这样就可以在同一个对象上使用两个get
方法。