gpt4 book ai didi

c++ - HashMap 、字符串比较和 std::map?

转载 作者:太空宇宙 更新时间:2023-11-04 14:35:29 25 4
gpt4 key购买 nike

首先,我想提出几点我认为是正确的。请问这些可以验证吗?

  • HashMap 存储字符串将它们转换为整数不知何故。
  • std::map 不是散列映射,如果我使用字符串,我应该考虑使用散列映射来解决内存问题吗?
  • 字符串比较不可靠。

如果 std::map 不是散列映射并且我不应该依赖字符串比较(基本上,我有一个以字符串作为键的映射......我被告知要使用散列映射来查找?),是C++ STL 中有 HashMap 吗?如果没有,Boost 怎么样?

其次, HashMap 是否值得[最初]一个std::map< std::string, non-POD GameState >

我想我的意思是得到理解...我计划拥有一个可以查找并注册到工厂的不同游戏状态的商店。如果需要更多信息,请询问。

感谢您的宝贵时间。

最佳答案

我认为您的大部分观点都不正确。

  • 当前标准中没有 HashMap 。 C++0x 引入了 unordered_map,其实现将是一个哈希表,您的编译器可能已经支持它。

  • std::map 被实现为平衡树,而不是哈希表。将任一映射类型与字符串(作为键或数据)结合使用时,不存在“内存问题”。

  • 在这两种情况下,字符串都不会存储为数字 - unordered_map 将使用散列函数从字符串中派生数字键,但不会存储它。

  • 我的经验是 unordered_map 的速度大约是 map 的两倍 - 它们具有基本相同的界面,因此您可以使用自己的数据尝试两者 - 只要您对性能感兴趣,您应该始终使用自己进行测试你自己的真实数据,而不是依赖于别人的经验。两种 map 类型都对字符串键的长度有些敏感。

假设你有一些 A 类,你想通过字符串键访问,映射将被声明为:

map <string, A> amap;
unordered_map <string, A> umap;

关于c++ - HashMap 、字符串比较和 std::map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3381739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com