繁体   English   中英

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

[英]Speed up c++ unordered_map insert if hash is present?

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

  1. 我可以将一个新的 Foo foo 添加到地图中,并带有 foo 的当前散列,从而节省了对 hash(foo) 的不必要的重复调用?
  2. 或者,如果我可以将 foo 添加到地图中并获得计算出的哈希值,那么我就不必在插入操作之外再次计算它?

按照弗朗索瓦的建议,使用“什么都不做”哈希来节省额外的计算将解决我的问题。 这是我想出的,任何关于进一步加快速度的评论将不胜感激。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM