如何在c ++中创建通用hashmap?

时间:2011-12-19 10:53:25

标签: c++ templates generics hashmap

如何在vc ++中创建通用hashmap?我使用visual studio和vc ++作为语言选项。我想将我的实现分成标题(接口)和cpp文件。 头:

template<class T1,class T2>
class Generic
{
  map<T1,T2> m1;

  public:

  // Standard constructors and destructors
  // -------------------------------------
     Generic ();
     virtual ~Generic ();

  // Copy constructor and equal operator
  // -----------------------------------
  Generic (Generic &);
  Generic& operator=(Generic&);

  void insert(const T1& key,const T2& value);
  T2 lookup(const T1&key);


};

和我的cpp文件:

MyGeneric::Generic()
{
}

//-----------------------------------------------------------------------------
// Generic : destructor
//-----------------------------------------------------------------------------
Generic::~Generic()
{
}

//-----------------------------------------------------------------------------
// Generic : copy constructor
//-----------------------------------------------------------------------------
Generic::Generic(Generic& original)
{
}

//-----------------------------------------------------------------------------
// Generic : equal operator
//-----------------------------------------------------------------------------
Generic& Generic::operator=(Generic& original)
{
  return *this;
}
void Generic::insert(const T1& key,const T2& value)
{
}
T2 Generic::lookup(const T1&key)
{
}

我想知道我是否在这里犯了错误。我也对它的使用感到困惑,因为我没有在我的cpp文件中定义模板。那是问题吗?如何删除hashmap中相应键的单个值?

1 个答案:

答案 0 :(得分:2)

您似乎需要变体类型。看看boost variant。它允许您存储和检索任何您想要的类型。当然,您可以将其与std::unordered_map等序列或地图结合使用。

实现它自己是非常混乱的。相信我,我试过:)。