我的要求是实现一个包含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)
是否有解决方案或替代方案?
答案 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;