我正在写一个哈希类:
struct hashmap {
void insert(const char* key, const char* value);
char* search(const char* key);
private:
unsigned int hash(const char* s);
hashnode* table_[SIZE]; // <--
};
由于insert()在插入新对时需要检查table [i]是否为空,所以我需要在启动时将表中的所有指针设置为NULL。
我的问题是,这个指针数组table_
会自动初始化为零,还是我应该手动使用循环在构造函数中将数组设置为零?
答案 0 :(得分:6)
table_
数组在您当前的设计中将未初始化,就像您说int n;
一样。但是,您可以在构造函数中对数组进行值初始化(从而对每个成员进行零初始化):
struct hash_map
{
hash_map()
: table_()
{
}
// ...
};
答案 1 :(得分:0)
您必须将所有指针都设置为NULL。 您不必使用循环,可以在构造函数中调用:
memset(table_, 0, SIZE*sizeof(hashnode*));