[英]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.