如果存在哈希,加速c ++ unordered_map插入?

时间:2018-02-22 20:53:45

标签: c++ hash unordered-map

我有一个std::unordered_map<Foo, int>,它覆盖了Foo的哈希函数。我还需要hash(Foo)用于其他目的,所以我想知道是否:

  1. 我可以使用foo的当前哈希向地图添加一个新的Foo foo, 保存不必要的哈希重复调用(foo)?
  2. 或者,如果我可以将foo添加到地图并获取 计算哈希,所以我不必再分别计算它 插入操作?

1 个答案:

答案 0 :(得分:1)

继Francois&#39;建议,使用&#34;什么都不做&#34;散列以备用额外的计算将解决我的问题。以下是我提出的建议,任何关于加快这一进程的评论都将受到赞赏。

struct DoNothing {
    std::size_t DoNothing::operator()(const std::size_t &key) {
        return key;
    }
};

std::unordered_map<std::size_t, Foo, DoNothing>