【发布时间】:2017-04-01 17:32:08
【问题描述】:
我正在构建一个使用线性探测作为其冲突解决方法的哈希表,但我被困在最后一次检查中。复制到表中找不到应该存在的键,因为它在检查之前已从原始哈希表中删除。
template <class TYPE>
LPTable<TYPE>::LPTable(const LPTable<TYPE>& other){
max_ = other.max_;
LargerMax = other.LargerMax;
size_ = other.size_;
if (other.size_)
{
records_ = new Record*[other.LargerMax];
for (int i = 0; i < other.size_; i++) // chasnged size from larger max
{
if (other.records_[i] != nullptr)
{
records_[i] = new Record(); //throws exception after this loop
records_[i]->key_ = other.records_[i]->key_;
records_[i]->data_ = other.records_[i]->data_;
records_[i]->isDeleted = other.records_[i]->isDeleted;
}
}
}
else
size_ = 0;
}
【问题讨论】:
-
你试过调试你的代码吗?
-
@Fureeish。是的,这就是我不明白的原因。它进入 find 函数中的 for 循环,但从未在复制的表中找到键
-
什么究竟不能按预期工作?比较?
-
我不确定为什么在从哈希表中删除项目后,哈希表副本找不到它正在寻找的单词
-
@Fureeish 在从第一个表中删除记录后试图在复制的哈希表中找到一个键
标签: c++ hashmap logic hashtable