簡體   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