(C++) 哈希表的构造函数

(C++) Constructor for HashTable

我正在尝试为 HashTable 实现创建 class

因为我正在做一个链式哈希表,所以我的哈希表开始时是一个 "object".

类型的指针数组

我遇到的问题是我的构造函数,因为在我的主文件中,我将接受一个数组大小的值。像这样:

int N;
scanf("%d", &N);
//Create HashTable Object
HashTable *hash = new HashTable(N);

这是我的 .h 文件:

class HashTable {

    int arraySize;

    typedef struct object {
        string data;
        object *nextptr;
    } object;

    object** table;
public:
    //Constructor
    HashTable(int size);

    /// ...and other methods...

对于我的构造函数实现,我不断收到错误消息: 线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)

所以我知道我做错了什么。

这是我的构造函数实现。

//Constructor
HashTable :: HashTable(int size){
    this->arraySize = size;
    this->table = new object[size]; //<-- this is giving me issues!!

    for (int i = 0; i < arraySize; i++) {
        table[i] = new object;
        table[i]->data = "";
        table[i]->nextptr = NULL;
    }

}

如果有人能帮我解决问题,我将不胜感激...对这类内容还是陌生的。

编辑: 作业要求我们使用数组而不是向量。

我想我需要使用一个指针数组,因为数组中的每个索引都将保存一个对象的链接列表,这些对象具有 "collided" 和相同的索引。

找到了我自己问题的答案.... 对于其他想知道我自己问题的答案的人:

this->table = new object *[size];

此行将动态创建指向 "object" 个对象的指针数组。

在头文件中 declecation 是:

object** table;