c++ - 如何在 C++ 中创建通用 HashMap ?

标签 c++ templates generics hashmap

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

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 中对应键的单个值?

最佳答案

看起来您需要一个变体 类型。看看 boost variant .它允许您存储和检索您想要的任何类型。您当然可以将它与序列或映射结合使用,例如 std::unordered_map

自己实现它本身就很麻烦。相信我,我试过了:)

关于c++ - 如何在 C++ 中创建通用 HashMap ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560263/

相关文章:

scala - 如何在Scala中为树代数数据类型的叶子调用构造函数?

c++ - 有没有一种直接的方法可以在不通过无关 Material 的情况下获得有关 gcc 可接受的选项值(例如 -std)的明确详细信息?

c++ - 无法测量 Windows 下由 std::vector<>::reserve 引起的内存分配

c++ - 显式实例化...但没有可用的定义 [-fpermissive]

c++使用友好类的类型作为模板参数声明STL vector

generics - 如何通过抽象将使用 Diesel 的多个功能合并为一个?

c++ - Const 成员函数与 Const 友元函数

c++ - C++ 中的并发效率

c++ - 部分特化类型特征时如何使用 std::decay?

c# - 如何在 C# 中正确设计通用 "request dispatcher"