繁体   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