如何在c ++中实现Hashtables数组?
我有一个哈希表类,其构造函数如下所示:
explicit ChainingHashTable( const HashedObj & notFound, int size = 101 );
所以我尝试通过这样做来创建这些哈希表的数组:
static ChainingHashTable<int> answers[5] = { {0, 500}, {0, 500}, {0, 500}, {0, 500}, {0, 500} };
然而,我得到以下错误&amp;警告:
browser.cpp:106:71: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
browser.cpp:106:71: error: converting to ‘ChainingHashTable<int>’ from initializer list would use explicit constructor ‘ChainingHashTable<HashedObj>::ChainingHashTable(const HashedObj&, int) [with HashedObj = int]’
我不能使用不同的编译器,因为这是一个类赋值,但我做错了什么?什么是正确的语法?
答案 0 :(得分:1)
编译器告诉您,您尝试编写的代码是C ++ 11。
您可以使用Boost.Assignment
答案 1 :(得分:1)
你试过吗
static ChainingHashTable<int> answers[5] = { ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500) };
以上是全局变量的方法。对于静态类成员,声明和定义必须是分开的:
class SomeClass
{
static ChainingHashTable<int> answers[5];
};
并在一个编译单元中(因此不在标题内)
ChainingHashTable<int> SomeClass::answers[5] = { ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500), ChainingHashTable<int>(0, 500) };