【发布时间】:2015-01-13 02:09:17
【问题描述】:
我正在尝试使用模板编写自己的地图类实现,而不是使用向量,只使用数组。
我有两个类:存储密钥和数据的元素。
template <typename K, typename DT>
class Element
{
public:
K key;
DT data;
};
还有 Map 类。
私有变量:
template <typename K, typename DT>
class myMap
{
typedef Element<K, DT> myElement;
private:
myElement *elements;
int size;
构造函数:
Template <typename K, typename DT>
myMap<K, DT>::myMap()
{
//An initial map with a size of 10 potential elements.
size = 10;
elements = new myElement[size];
}
好的,我的问题是;在我的插入方法中,它将一个新元素添加到数组中,我在访问数组中的元素数据时遇到了问题。
template <typename K, typename DT>
void myMap<K, DT>::insert(const K &key, const DT &val)
{
/*A temporary element to store the data which is then stored
in the array.*/
myElement *temp = new myElement;
temp->key = key;
temp->data = val;
elements[i]->key //This isn't allowed, It's not letting me access the key for the element at I
delete temp;
}
我可以这样处理:
elements->key;
基本上我需要能够访问类中的数组并访问元素类中的数据,以便我可以检查键是否已经存在以避免重复。
【问题讨论】:
-
为什么要使用数组来实现地图?听起来您正在实施
std::vector而不是地图。 -
@CaptainObvlious 也许他在学习?
标签: c++ arrays class map associative-array