【问题标题】:which key-value data structures should i use? quick retrieval by value, and quick retrieval by key我应该使用哪些键值数据结构?按值快速检索,按键快速检索
【发布时间】:2013-12-10 19:33:14
【问题描述】:

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

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

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

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

我一直在阅读有关 hashmaps 的内容,但这不是我要寻找的结构:hashmaps 用于非唯一值项,因此我无法检索给定值的键。

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

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

【问题讨论】:

    标签: java c++ data-structures


    【解决方案1】:

    Boost. bimap 应该适合你。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这是一个很好的答案...但我选择了 Johan 的答案,因为他给了我数据结构的名称
      猜你喜欢
      • 2011-03-18
      • 1970-01-01
      • 2013-05-03
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多