首先,我想提出一些我认为是真实的观点.请问这些可以验证吗?
如果std :: map不是哈希映射而且我不应该依赖字符串比较(基本上,我有一个字符串作为键的地图......我被告知要使用哈希映射来查找?),是否有哈希在C++ STL中映射?如果没有,Boost怎么样?
其次,哈希图是否值得[原创] std::map< std::string, non-POD GameState >?
我认为我的观点正在实现......我计划拥有一个不同游戏状态的商店,我可以查看并注册到工厂.如果需要更多信息,请询问.
谢谢你的时间.
小智 10
我不相信你的大多数观点是正确的.
当前标准中没有哈希映射.C++ 0x引入了unordered_map,谁的实现将是一个哈希表,你的编译器可能已经支持它了.
std :: map实现为平衡树,而不是哈希表.使用带字符串的地图类型时,没有"内存问题",无论是作为键还是数据.
在任何一种情况下,字符串都不会存储为数字 - unordered_map将使用散列函数从字符串中导出数字键,但不会存储.
我的经验是unordered_map的速度大约是map的两倍 - 它们基本上具有相同的界面,所以你可以尝试使用自己的数据 - 每当你对性能感兴趣时,你应该总是用自己的真实数据进行测试,而不是而不是取决于他人的经验.两种映射类型都会对字符串键的长度有些敏感.
假设你有一个类A,你想通过字符串键访问,地图将被声明为:
map <string, A> amap;
unordered_map <string, A> umap;
Run Code Online (Sandbox Code Playgroud)