基本上我的问题与两个STL映射的Intersection相同,但有两个unordered_maps
:
std::unordered_map<Key, Value> A;
std::unordered_map<Key, Value> B;
我想要交叉路口,类似于
std::unordered_map<Key, std::pair<Value, Value>> C;
其中键是A和B中的值,并且该值分别是A和B中的一对值。
最快的方法是什么?目前,我迭代两者中最小的一个,并在第二个中查询密钥。幸运的是,我的键类型通常很容易哈希,但是我没有找到一种方法来获取迭代映射的键的哈希值以节省第二次哈希的计算(要清楚:我不知道如何在不重新计算哈希的情况下恢复哈希,以及在何处找到类似find
以计算哈希作为参数[1]的东西。
谢谢。
[1]是的,我知道,早期优化是许多疾病的根源。但是我想知道这是否可行,而不是解释这将是一罐臭虫。实际上,在某些情况下,取决于用户的输入,密钥可能很复杂且散列成本很高。
我知道您不想听到它,但是无论如何我都会说:您应该在实例上缓存哈希值,以便哈希可以简化为简单的成员查找。如果实例是不可变的(或者至少进入哈希函数的部分是不可变的),那么最简单的方法是在构造函数中计算哈希。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句