0

我正在尝试为 HashTable 实现创建一个类

因为我正在做一个链式哈希表,我的哈希表开始是一个“对象”类型的指针数组。

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

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 (code=1, address=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;
    }

}

如果有人可以在这里帮助我,那将不胜感激......这种东西的新手。

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

我想我需要使用一个指针数组,因为数组中的每个索引都将保存一个与相同索引“冲突”的对象的链表。

4

1 回答 1

0

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

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

此行将动态创建指向“对象”对象的指针数组。

在头文件中,声明是:

object** table;
于 2015-03-24T05:16:36.503 回答