【发布时间】:2015-01-13 20:39:28
【问题描述】:
对于我的最新任务,我需要创建一个包含股票的哈希表,这些股票被封装在一个类中。为了避免碰撞,我需要使用线性探测。但是,我遇到的问题;是我无法测试数组的元素(即哈希表)是否为空。
这里是从几个文件中汇总的一些代码,但这只是为了让您了解发生了什么。
class Stock{
friend class HashMap
}
class HashMap{
bool get() //this function is used for putting new stocks into the table
private:
struct Slot {
Stock slotStock;
}
Slot *slots;
}
在 get() 函数中
while(slots[index] != NULL)
这给出了一个错误:没有运算符 "!=" 匹配这些操作数 HashMap::Slot != int
我有什么替代方法可以检查插槽是否为空?
数组是动态分配的。
编辑:当我初始化数组时,它是使用默认构造函数为数组的每个元素创建一个对象,还是将元素留空?
【问题讨论】:
-
C++ 对象没有像 Java 引用那样的空概念。
-
您可以为每个插槽设置一个标志,无论它是否有效。即使无效,插槽对象仍然存在,尽管可能不在有用状态。
标签: c++ arrays class hashmap hashtable