【问题标题】:Can a hash table in c++ be used in a similar fashion to a dictionary in Python?c++ 中的哈希表可以以与 Python 中的字典类似的方式使用吗?
【发布时间】:2018-02-25 02:57:23
【问题描述】:

我在 12 年级的计算机科学课上,我的老师要求我们完成一项涉及基本功能审查的作业,以便从去年开始再次熟悉 C++。

我正在重新创建一个 Python 程序,该程序使用字典将键值保存为商店产品(例如“Pasta”)并将该键的值保存为价格(例如 3.99)并使用该字典创建一种购物体验,即装满购物车,然后使用键及其值签出购物车中的商品。

但是,我很难重新创建字典在 C++ 中提供的键值存储。

我想知道哈希表是否是一种有效的解决方案?我已经对此进行了一些研究,看起来很有希望,但我不知道这是否是一个死胡同。

【问题讨论】:

  • std::unordered_map
  • 考虑一下 Python 字典到底是什么。它是哈希表/哈希图的一种形式。正如 DeiDei 所说,查看 std:unordered_map。但是,如果您想对较低级别的语言更加熟悉,我建议您更多地了解实现/事情如何在底层工作 - 特别是数据结构。 Python 抽象了很多东西。
  • "字典在 C++ 中提供" - C++ 不提供任何称为字典的东西。
  • @NeilButterworth:它隐含地 "...重新创建字典提供的键值存储 [in python],在 C++ 中"
  • 您可以考虑std::unordered_map<std::string, double>,但还有其他选择:例如您可以将整数美分存储在 int 中,而不必处理浮点舍入问题。

标签: c++ hashtable


【解决方案1】:

C++ 标准库有一个名为std::map 的容器,它存储键值对,可以快速找到给定键的值。它被实现为二叉搜索树,因此它的搜索具有对数复杂度。

还有一个名为std::unordered_map 的容器,它使用哈希表来存储具有恒定平均搜索复杂度的元素。

【讨论】:

  • “使用类似于哈希表” - 嗯...更具体地说:哈希表;-)。
  • 不是这方面的专家,感谢您的澄清!这些网站只提到了存储桶和哈希值,而没有具体说明它是一个哈希表,所以我并不完全确定。
猜你喜欢
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
相关资源
最近更新 更多