如何在 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/