C++ 将存储桶标记为已在哈希表中删除

C++ 将存储桶标记为已在哈希表中删除,c++,hashtable,linear-probing,C++,Hashtable,Linear Probing,我一直很难找到一个像样的解释。我用C++编写了一个线性探测哈希表,但是我在远程()>代码>操作中遇到了麻烦。我正在对字符串的字典集合进行哈希运算,我想知道如何将索引Iremove from设置为deleted,以便search()和insert()正常工作。任何帮助/伪代码都会很好,谢谢。我现在最好的猜测是创建一个名为“deleted”的结构对象,并将其放置在那里。每个bucket都可以是一个struct,其中包含键、值和一个标志,以指示bucket是否为空,如下所示: struct bucke

我一直很难找到一个像样的解释。我用C++编写了一个线性探测哈希表,但是我在<代码>远程()>代码>操作中遇到了麻烦。我正在对
字符串的字典集合进行哈希运算,我想知道如何将索引
I
remove from设置为deleted,以便
search()
insert()
正常工作。任何帮助/伪代码都会很好,谢谢。我现在最好的猜测是创建一个名为“deleted”
的结构对象,并将其放置在那里。

每个bucket都可以是一个
struct
,其中包含键、值和一个标志,以指示bucket是否为空,如下所示:

struct bucket
{
    std::string key;
    std::string value;
    bool empty = true;
};
然后,您可以有这样一个桶的
std::vector

class hash_table
{
public:
    hash_table(): buckets(100) {} // hash table has 100 buckets

    void put(std::string const& key, std::string const& value)
    {
        // ...
    }

    // etc...

private:
    std::vector<bucket> buckets; // the table
};
类哈希表
{
公众:
hash_table():bucket(100){}//哈希表有100个bucket
void put(标准::字符串常量和键,标准::字符串常量和值)
{
// ...
}
//等等。。。
私人:
std::vector bucket;//表
};

也许每个bucket都有一个
bool
标志?我想到了这一点……但您如何将每个bucket实现为在创建时包含bool?