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?

有帮助吗?

解决方案

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_()
    {
    }

    // ...
};

其他提示

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*));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top