我的问题与两个STL地图的交集类似,但是这里有两个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的值所组成的一对。
如何最快地实现这个目标?目前,我遍历两者中较小的那一个并查询第二个中的键。幸运的是,我的键类型通常很容易进行hash操作,但我并没有找到一种方法来获取迭代映射中我的键的hash值,以节省第二个操作的hash计算(明确一下:我不知道如何在不重新计算hash的情况下恢复hash,以及在哪里可以找到像 find
带有计算hash参数的函数 [1])。
谢谢。
[1] 是的,我知道,早期优化会导致很多问题。但我想知道是否可能实现这一点,而不是解释这将是一个错误的做法。实际上,在某些情况下,根据用户输入,键可以是复杂且成本高昂的。
map
,那么它会更简单、更快。 - dyp