簡體   English   中英

無序 map 其中鍵是一對

[英]Unordered map where key is a pair

我有一個無序的 map,其中我的鍵是一對 <int, const Foo*>,值是一個向量。 我在插入或查找期間沒有看到任何編譯或運行時錯誤,但我不確定這是否是最有效的代碼。 編譯器會創建一個有效的 hash function 來計算鍵的 hash 值還是我應該使用 boost::hash?


class Foo {
  public:
   Foo():var1(0){};
   ~Foo();
   void func(int a) {
      var1 = a;
   }
   int var1;
}

int main()
{
    Foo f1;
    f1.func(10);
    const Foo* fp = &f1;
    std::unordered_map<std::pair<uint,const Foo*>,std::vector<uint>> umap1;
    umap1[std::make_pair(1,fp)].emplace_back(100);
}
 

std::hash<T>沒有std::pair<X,Y>特化。 你必須提供一個。

Boost 的版本沒有您可能編寫的第一個版本那么糟糕,所以請隨意使用它。 (它並不完美,但也不可怕)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM