c++ - 如何搜索包含reference_wrapper 的hash_map?

标签 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需要。有什么办法可以避免这个吗?

最佳答案

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

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

关于c++ - 如何搜索包含reference_wrapper 的hash_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663056/

相关文章:

c++ - 按字母顺序对字符串数组排序的问题

list - Scala HashMap列表: simpler default?

java - Android - 在应用程序和 Jar 的 HashMap 中动态添加函数

c++ - 使用代码块在 Windows 7 上运行 TBB 代码

c++ - 为什么 TBB 不能将 `int` 转换为 `const tbb::atomic<unsigned int>&` ,但 std::atomic 可以?

c++ - 我该如何解决 ldconfig create link with version number

c++ - 如何从文件中读取直到读取一个字符然后跳过一些字符并继续读取

c++ - 在 C++ 中处理大数据的最佳方式?

java - 单例的同步(哈希)映射

c++ - tbb GettingStarted 示例未编译