我已经获得了我需要编码的模板的骨架。我从来没有真正处理模板。关于这个模板的奇怪之处在于它要求我们在模板本身内编写一个类 - 不仅仅是类函数,而是一个全新的类。以下是仅用于模板的代码(我在一些方法中插入了几行代码才开始,它们对我的问题无关紧要):
template<class K, class V> class HMap
{
private:
// insert instance variables
// insert constants (if any)
public:
class MapEntry
{
private:
K key;
V value;
public:
/**
* Creates a MapEntry.
*
* @param akey the key
* @param avalue the value
*/
MapEntry(K akey, V avalue)
{
key = akey;
value = avalue;
}
/**
* Returns the key for this entry.
*
* @return the key for this entry
*/
K getKey()
{
return key;
}
/**
* Returns the value for this entry.
*
* @return the value for this entry
*/
V getValue()
{
return value;
}
/**
* Sets the value for this entry.
*
* @param newValue
* @return the previous value for this entry
*/
V setValue(V newValue)
{
V oldval;
oldval = value;
value = newvalue;
return oldval;
}
};
当您创建HMap模板类型的对象时,如何在其中使用MapEntry类?我对模板非常陌生,我有点失落,不知道从哪里开始。谢谢。
答案 0 :(得分:0)
HMap<Int, Double>::MapEntry
引用内部类。但是为什么要暴露内部结构?
也许这样做会更容易(我实现对的列表,而不是哈希,因为我很懒)
template <type Key, type Value>
class HashMap {
private:
struct entry { Key key, Value value};
std::list<entry> map;
public:
HashMap() {};
void add_element(Key key, Value value)
{
entry e = {.key = key, .value = value};
map.push_back(e);
};
}