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

Speed up c++ unordered_map insert if hash is present?

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

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

按照 Francois 的建议,使用 "do nothing" 散列来节省额外的计算可以解决我的问题。这是我想出的,任何关于进一步加快速度的评论都将不胜感激。

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

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