我对C ++很新,并尝试使用指向向量的指针来实现一个简单的HashTable(这样我就可以对冲突进行链接)。我不确定我是否会采取这种完全错误的方式。
如何在下面的构造函数中构造给定大小的HashTable?
感谢。
class HashTable
{
public:
HashTable(size_t size)
{
// ? how do i create an array of vector of entry object of size size
}
private:
class Entry
{
public:
Entry(string key, int value) : _key(key), _value(value) {}
~Entry(){}
private:
string _key;
int _value;
friend class HashTable;
};
vector<Entry>* _table;
size_t _size;
}
答案 0 :(得分:3)
为typedef
创建Bucket
,这是Entry
个对象的列表。
将一个Bucket
列表存储在哈希表中。
class HashTable
{
public:
HashTable(size_t size) : _table(size) // Initialize the table given the size
{ // There is no need to keep the size
} // as member data.
private:
class Entry
{
public:
Entry(string key, int value) : _key(key), _value(value) {}
~Entry(){}
private:
string _key;
int _value;
friend class HashTable;
};
// Create a typedef for a bucket, which is a list of `Entry`s.
std::vector<Entry> Bucket;
// Store a list of Buckets.
std::vector<Bucket> _table;
}
答案 1 :(得分:2)
HashTable(size_t size) : _table(new vector<Entry>[size]), _size(size) {}