Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哈希表搜索函数在某些情况下不起作用_C++ - Fatal编程技术网

C++ 哈希表搜索函数在某些情况下不起作用

C++ 哈希表搜索函数在某些情况下不起作用,c++,C++,搜索函数将接收一个键值,它是一个常量字符串&它将在哈希表中查找键值项是否找到 除了少数情况(例如,当我将“ZZ0”传入函数时),我的代码在这里工作 不确定这是否是因为我使用的是==而不是strcmp 但我不明白为什么仅仅因为这样它就不起作用。有人能解释一下我是否遗漏了什么吗 void HT::search(const string& item) { int index=hash(item); bool found=false; for(unsigned int i

搜索函数将接收一个键值,它是一个常量字符串&它将在哈希表中查找键值项是否找到

除了少数情况(例如,当我将“ZZ0”传入函数时),我的代码在这里工作

不确定这是否是因为我使用的是
==
而不是
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
)。您应该显示哈希函数。