Hashmap, инициализирующий динамический массив узлов с помощью nullptr c ++ - PullRequest
0 голосов
/ 09 октября 2018

У меня проблемы с правильной инициализацией динамического массива узлов с помощью 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 голосов
/ 09 октября 2018

Все ваши 500 Node указатели NULL, однако тип hashArray равен Node **, поэтому отладчик показывает вам только один элемент, как если бы он указывал на one Node указатель.Другими словами, поскольку ваш массив динамический, отладчик не знает, сколько элементов показать.

Ошибка, которую вы получаете, связана с просмотром содержимого первого Node, указатель которогоNULL, который естественно не может быть прочитан.

...