首页 > 解决方案 > unordered_set (C++) 在字符串的情况下与在整数的情况下的性能有什么不同吗?

问题描述

我想知道 unordered_set 使用散列,所以在整数的情况下应该比在字符串的情况下更快。unordered_map 也是如此。我在网上没有找到明确的答案。如果有人能澄清这一点,那就太好了。

标签: c++stringintegerunordered-mapunordered-set

解决方案


unordered_set (C++) 在字符串的情况下与在整数的情况下的性能有什么不同吗?

可以有。语言规范不保证一种或另一种方式。

您可以通过测量性能来验证您的目标系统上的程序是否属于这种情况。


如果您正在考虑是使用字符串本身作为键,还是使用单独散列的字符串(即整数),那么技术上单独的散列会更昂贵,因为整数将再次被散列。也就是说,散列一个整数是微不足道的(我认为它可能是恒等函数),所以这可能没有明显的效果。

单独的散列 + 存储整数确实具有潜在的优势:您可以对字符串键进行一次预散列,并重用散列的整数键,而具有字符串键的映射需要在每次查找时重新散列键。这对您的情况是否有用取决于您要对地图执行的操作。


推荐阅读