如何在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中相应键的单个值?
答案 0 :(得分:2)
您似乎需要变体类型。看看boost variant。它允许您存储和检索任何您想要的类型。当然,您可以将其与std::unordered_map
等序列或地图结合使用。
实现它自己是非常混乱的。相信我,我试过:)。