C++ 哈希表搜索函数在某些情况下不起作用
搜索函数将接收一个键值,它是一个常量字符串&它将在哈希表中查找键值项是否找到 除了少数情况(例如,当我将“ZZ0”传入函数时),我的代码在这里工作 不确定这是否是因为我使用的是C++ 哈希表搜索函数在某些情况下不起作用,c++,C++,搜索函数将接收一个键值,它是一个常量字符串&它将在哈希表中查找键值项是否找到 除了少数情况(例如,当我将“ZZ0”传入函数时),我的代码在这里工作 不确定这是否是因为我使用的是==而不是strcmp 但我不明白为什么仅仅因为这样它就不起作用。有人能解释一下我是否遗漏了什么吗 void HT::search(const string& item) { int index=hash(item); bool found=false; for(unsigned int i
==
而不是strcmp
但我不明白为什么仅仅因为这样它就不起作用。有人能解释一下我是否遗漏了什么吗
void HT::search(const string& item)
{
int index=hash(item);
bool found=false;
for(unsigned int i=0;i<hsize;i++)
{
if(hTable[(index+i)%hsize].key==item)
{
found=true;
cout<<"item found";
break;
}
}
if(!found)
{
cout<<" : Item not found!"<<endl;
}
cout<<endl;
}
void HT::search(常量字符串和项) { int index=散列(项); bool-found=false;
是比较两个字符串是否相等的正确方法(只要它们确实都是
对于(unsigned int i=0;i我看到您使用open address进行冲突,在这里我看不到任何问题。您确定字符串“ZZO”已正确插入哈希表吗?我建议您进行单元测试以检查这一点。只需插入字符串并迭代哈希表,看看它是否存在
顺便说一句,我建议您使用来实现哈希表,因为它易于实现,而且通常效率更高(完全取决于您的哈希函数)即使没有看到你的插入函数代码,我也会建议你的“插入”函数是个问题——它很可能不处理哈希冲突并简单地重写一些值/元素——为什么你也不为插入函数发布你的代码? C++,<代码> = =)。您应该显示哈希函数。std::string