我必须在哈希表中搜索/插入多达 1000000 个元素,从 txt 文件中获取输入,并且我需要有效地执行此操作。我写了一些代码,但是输入增长需要几秒钟。
我的结构是节点列表的向量。散列键是长度为 5 的字符串。散列函数是 djb(项目似乎是均匀分布的)。
这是我使用的唯一功能:
void searchAndInsert (const string& key)
{
unsigned int i = Hash (key) % size;
for (list<Node>::iterator it = v[i].begin(); it != v[i].end (); it++)
if (it->getNome () == key)
return;
v[i].push_back (Node (key));
++elements;
}
我该如何改进它?
谢谢大家,对不起我的英语不好!:D