如何使用tbb实现并发哈希表,将键映射到不同类型的值?

时间:2015-03-30 11:11:04

标签: c++ hashmap

我的要求是实现一个包含2个字段的并发哈希表,第一个是int类型的键,而第二个存储integer,char和structure类型的数据。显而易见的方法是使用

定义哈希映射
typedef concurrent_hash_map<int, void> myTable;

但它会出现以下错误:

/usr/include/c++/4.8/bits/stl_pair.h:102:11: error: instantiation of ‘std::pair<_T1, _T2>::second’ as type ‘void’
    _T2 second;                /// @c second is a copy of the second object
       ^
/usr/include/c++/4.8/bits/stl_pair.h:102:11: error: ‘std::pair<_T1, _T2>::second’ has incomplete type
/usr/include/c++/4.8/bits/stl_pair.h:102:11: error: invalid use of ‘void’
/usr/include/c++/4.8/bits/stl_pair.h:112:26: error: forming reference to void
   _GLIBCXX_CONSTEXPR pair(const _T1& __a, const _T2& __b)

是否有解决方案或替代方案?

1 个答案:

答案 0 :(得分:2)

你不能那样使用void

你的意思是typedef concurrent_hash_map<int, void*> myTable;

如果你的项目中有提升可行,你可能最好使用boost::variant

//assuming myStruct is your "structure"
typedef boost::variant<int,char,myStruct> myValue;
typedef concurrent_hash_map<int, myValue> myTable;