如何初始化对象向量数组

时间:2014-04-13 01:43:41

标签: c++ hashtable

我对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;
}

2 个答案:

答案 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) {}