如果存在哈希,请加快C unordered_map插入

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

本文关键字:unordered map 插入 存在 哈希 如果      更新时间:2023-10-16

我有一个 std::unordered_map<Foo, int>,其中有一个用于foo的哈希功能。我还需要哈希(foo(出于其他目的,所以我想知道是否:

  1. 我可以在地图上添加一个新的foo foo,并使用现在的hash for foo,保存哈希(foo(的不必要的重复调用?
  2. 另外,如果我可以在地图上添加foo并获得计算的哈希,所以我不必再次将其分开计算插入操作?

遵循弗朗索瓦(Francois(的建议,使用"无所事事"哈希(Hash(省去额外的计算将解决我的问题。这是我想到的,对加速加速的任何评论将不胜感激。

struct DoNothing {
    std::size_t DoNothing::operator()(const std::size_t &key) {
        return key;
    }
};
std::unordered_map<std::size_t, Foo, DoNothing>