我在寻找一个合适的解释方面遇到了一些麻烦。我正在使用C ++编写线性探测哈希表,但我遇到了remove()
操作的问题。我正在浏览strings
的字典集合,我想知道如何将索引i
删除为已删除,以便search()
和insert()
正常工作。任何帮助/伪代码都会很棒,谢谢。我现在最好的猜测是制作一些名为deleted
的结构对象并将其放在那里。
答案 0 :(得分:0)
每个存储桶可以是struct
,其中包含键,值和一个标志,用于指示存储桶是否为空:
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
};