如何搜索包含reference_wrapper的hash_map?

时间:2013-05-21 05:54:59

标签: c++ hashmap tbb

我正在使用英特尔TBB Concurrent Hash Map tbb::hash_map<std::string, std::reference_wrapper<Clusters>>,我想使用

搜索此hash_map
tbb::concurrent_hash_map<std::string, std::reference_wrapper<Clusters>>::accessor a;
if(table.find(a, operation.get().GetKey()))
{
    a->second.get().AddOperation(operation);
}

但是它给了error: no matching function for call to ‘std::reference_wrapper<Clusters>::reference_wrapper()。所以问题是reference_wrapper没有find需要的默认构造函数。有什么办法可以绕过这个吗?

1 个答案:

答案 0 :(得分:1)

这似乎是find()或其文档的实现中的错误。要么它不需要映射类型为DefaultConstructible,要么它不需要记录它需要它。

我认为这不是你能解决的问题。作为一种解决方法,您可以在地图中存储指针而不是引用包装器。