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