【问题标题】:Ways store some numbers (see inside for detail on this) in C++在 C++ 中存储一些数字的方法(有关详细信息,请参阅内部)
【发布时间】:2013-10-29 17:21:14
【问题描述】:

我需要存储一些这样的数字

key => (four integers, between 0 to 30 (maxmimum), -1 means NULL)
125 => (1,3,5,20)
80 => (4,2,-1,-1)
20 => (10,12,21,3)
...

我需要最快的随机访问。实际上,它将成为我的应用程序的数据表。我想将这些值存储在标头中,并在需要的地方调用它们。我主要做脚本(PHP/Python),我有数组/字典。但是 C++ 呢?

到目前为止,我已经找到了 map 和 unordered_map(似乎前者更适合随机访问)。

【问题讨论】:

  • unordered_map 提供摊销的恒定读取时间。

标签: c++ list dictionary data-structures unordered-map


【解决方案1】:

您可以使用std::unordered_map 来保存它,即:std::unordered_map<int, std::array<int, 4>>

使用unordered_map 将提供更快的按键访问。来自this documentation

unordered_map 容器比 map 容器更快地通过其键访问单个元素,尽管它们通常对于通过其元素的子集进行范围迭代的效率较低。

【讨论】:

  • 是的,当我使用谷歌搜索时,该文档是第一个,但我想知道是否还有另一种方式我错过了。如果没有人有其他建议,我会接受这个答案并稍后使用它。顺便说一句,谁能给我一个 unordered_map 的代码示例?我在某处读到它需要散列函数,我必须构建它。
  • @thelastblack 如果您使用 int 作为键,则不需要自定义散列函数。用法非常简单 - 请参阅:stackoverflow.com/a/2179985/65358 示例
  • 太棒了!我会去的。谢谢!
猜你喜欢
  • 2019-06-05
  • 2021-07-31
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
相关资源
最近更新 更多