重新散列由列表C ++向量组成的哈希表

时间:2015-10-24 09:11:32

标签: c++ c++11 vector stl hashtable

所以我实现了一个存储指针的哈希表。我将其实现为STATIC_URL = '/static/' STATIC_ROOT = '/var/location/to/your/static/files' STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), ) vector。沿着lists的路线。我已经实现了一切,它工作正常。当我尝试重新散列哈希表时,我唯一的问题出现了。哈希表使用单独的链接来解决冲突,因此我的列表向量。

使用调试器,我发现我的reshsh循环挂在while循环上并导致无限循环。它不断从我的旧矢量的第一个索引读取。我是新手,我不确定重新检查这个表的正确方法。我试图研究并发现没有太多关于哈希表的实现的引用,更不用说重新哈希了。这是我的实施。

std::vector<std::list<Sequence*> > hashTable;

我觉得这是一个简单的错误,我只是没有看到它。或者我完全以错误的方式解决这个问题?

2 个答案:

答案 0 :(得分:1)

您似乎无法更新iter,这就是iter永远不会成为hashtable[i].end()的原因,除非它以该值开头。

答案 1 :(得分:0)

在你的while循环结束之前,你错过了一个 ++iter ,所以它会移动到列表中的下一个。

我通常会自己使用for循环,因为它让我不太可能忘记增加迭代器。类似的东西:

for(auto iter = hashTable[i].begin(); iter != hashTable[i].end(): ++iter)
{
     // ... code using iterator ...
}