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

时间:2017-03-26 03:25:58

标签: c++ hashtable linear-probing

我在寻找一个合适的解释方面遇到了一些麻烦。我正在使用C ++编写线性探测哈希表,但我遇到了remove()操作的问题。我正在浏览strings的字典集合,我想知道如何将索引i删除为已删除,以便search()insert()正常工作。任何帮助/伪代码都会很棒,谢谢。我现在最好的猜测是制作一些名为deleted的结构对象并将其放在那里。

1 个答案:

答案 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
};