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