(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;
我正在尝试为 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;