Hashmap使用nullptr C初始化节点的动态数组

时间:2018-10-09 04:35:10

标签: c++ algorithm data-structures hashmap hashtable

我无法使用nullptr正确初始化动态节点数组。

HashMap::HashMap(int size)
{

this->sizeOfArray = size;

this->hashArray = new Node*[this->sizeOfArray];
for (int i = 0; i < this->sizeOfArray; i++)
  {
    hashArray[i] = nullptr;

  }

}

这是我的“ hashArray”在标题中的样子。

Node **hashArray;

forloop完成了所有500个循环,但是当我查看数组中的数据时,只能在看到“无法读取内存”之前看到第一个元素。

这是我的意思的图片 https://ibb.co/d0GLw9

这是Node的样子

    Node()
{
    value = 0;
}
Node(std::string input)
{
    key = input;
    value = 1;
    next = nullptr;
}
Node(std::string input, int count)
{
    key = input;
    this->value = count;
    next = nullptr;
}
Node(std::string input, int count, Node *next)
{
    key = input;
    this->value = count;
    this->next = next;
}

Node *next;
std::string key;    
unsigned int value; 

我怀疑这个问题导致我以后无法向hashArray添加任何新节点。

1 个答案:

答案 0 :(得分:1)

您的所有500个Node指针都是NULL,但是hashArray的类型是Node **,这就是调试器仅向您显示一个元素的原因,就像指向一个 Node指针的指针。换句话说,由于数组是动态的,因此调试器不知道要显示多少个元素。

您遇到的错误是关于查看指针为Node的第一个NULL的内容,这自然是无法读取的。