哈希表编译时间

时间:2015-05-04 16:16:45

标签: c++ constexpr compile-time

今天我试图在编译和运行时制作哈希表。 但是我并不熟悉constexpr,而且我在网上找不到我想要的东西。

有我的代码:

#ifndef HASHTABLE_HPP
#define HASHTABLE_HPP

#include  <cstddef>
#include  <vector>
#include  <string>

namespace  base
{
  template <typename K, typename V>
  class  HashTable
  {
    constexpr  HashTable(const size_t size, const std::pair<K, V> data[])
            : _hsize(size), _rsize(size), _nodes(initNodes(data)) {}

    HashTable(size_t hsize): _hsize(hsize), _rsize(0) {}
    ~HashTable() = default;

    private:
      class  HashNode
      {
        public:
          constexpr HashNode(HashNode *next, K key, V data, int flags): _next(next),_key(key),
                                                                      _data(data),_flags(flags) {}
      public:
        HashNode*  _next;
        K          _key;
        V          _data;
        int        _flags;
      };

    private:
      size_t     _hsize;  // Size of nodes[]
      size_t     _rsize;  // Number of elements
      HashNode*  _nodes;

    private:
      unsigned  hash();
      constexpr HashNode*  initNodes(const std::pair<K, V> data[], const size_t size)
      {
      }

  public:
    void  emptyTable();
    void  fillTable();
    int   compareNodes(K, K);
    int   addNode(K, V);
    V     getNode(K);
    V     removeNode(K);
  };
}
#endif

我能做出类似的东西吗?但是initNodes存在一些问题。 我想用gcc 4.9(gcc-clite)编译。 拜托,你能给我一些建议吗?

非常感谢! 祝你有愉快的一天

编辑: 更精确,我希望能够在编译时初始化一个const哈希表。如果可以使用同一个类进行运行时

0 个答案:

没有答案