Reputation: 14652
I'm writing a hash class:
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]; // <--
};
As insert() need to check if table[i] is empty when inserting a new pair, so I need all pointers in the table set to NULL at start up.
My question is, will this pointer array table_
be automatically initialized to zero, or I should manually use a loop to set the array to zero in the constructor?
Upvotes: 0
Views: 2387
Reputation: 477660
The table_
array will be uninitialized in your current design, just like if you say int n;
. However, you can value-initialize the array (and thus zero-initialize each member) in the constructor:
struct hash_map
{
hash_map()
: table_()
{
}
// ...
};
Upvotes: 6
Reputation: 2584
You have to set all pointers to NULL. You do not have to use a loop, you can call in the contructor :
memset(table_, 0, SIZE*sizeof(hashnode*));
Upvotes: 0