繁体   English   中英

std :: unordered_map <int,float>是否仍然需要对整数进行散列才能得到值?

[英]Does std::unordered_map<int,float> still have to hash the integer to get to the value?

我想知道std::unordered_map< int, float >仍然需要散列给定的整数来获取值或者直接使用它。 我需要每秒快速执行此操作很多次,并且由于std::hash<int>不能保证是身份函数,我将如何重新定义它? (显然不使用STL并编写我自己的容器是可能的,但我怀疑我写的那些会更有效(可能更多,更慢))。 谢谢!

我想知道std::unordered_map< int, float >仍然需要散列给定的整数

是的,它确实。

我需要多次快速执行此操作

您是否完成了项目并目睹了这是它的瓶颈? 如果没有,那么请注意,因为你可能最终成为过早优化的受害者!

我将如何重新定义它?

你必须编写自己的代码。 示例: 使用自定义类类型作为键的C ++ unordered_map ,您将使用struct Key { int value; }; struct Key { int value; };

我非常怀疑任何理智的编译器都是以直通方式进行的。 即便如此,你还是要测试它是否有任何实际的有害性能影响(如果他们这样做,他们可能有充分的理由 - 例如他们的哈希函数被设计为与他们的unordered_map一起工作)。 如果要强制执行散列函数,可以:

struct Key{
 int value;
};

然后看看这个答案 ,看看如何使它与unordered_map一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM