使用C++模板对C++对象的指针数组
我有两个问题,首先我试图创建一个哈希表:我是否正确地实例化了数组?我试图创建指向链接列表的指针的动态数组以进行链接:链接列表节点按值存储。我认为我的ItemType**语法不正确,尽管我不确定:这是我的理解,如果我错了,请纠正我 第一个*将“HashArray”实例化为数组,然后第二个*将其实例化为指向每个链表头的指针数组:我应该指向一个节点。节点嵌套在LinkedList中;虽然它是公开的。无论如何,这听起来很荒谬,但它是否应该按照LinkedList::Node::ItemType**HashArray的思路读取一些内容? 有什么建议吗 编辑:为了简单起见,我没有包括复制/删除/分配构造函数: 编辑2:我也没有包括我的“哈希函数”/“增长函数”/“收缩函数”。显然,在我事先编写好插入和模板之前,编写删除函数等是没有意义的。。。让我知道,如果这将有助于张贴更多的我有什么。现在我遇到了编译错误 C2440:“=”:无法从“列表<类型>”*”转换为“标准::字符串*” 在线上 HashArray[index]=链接列表 这将有助于解决这个问题使用C++模板对C++对象的指针数组,c++,arrays,pointers,C++,Arrays,Pointers,我有两个问题,首先我试图创建一个哈希表:我是否正确地实例化了数组?我试图创建指向链接列表的指针的动态数组以进行链接:链接列表节点按值存储。我认为我的ItemType**语法不正确,尽管我不确定:这是我的理解,如果我错了,请纠正我 第一个*将“HashArray”实例化为数组,然后第二个*将其实例化为指向每个链表头的指针数组:我应该指向一个节点。节点嵌套在LinkedList中;虽然它是公开的。无论如何,这听起来很荒谬,但它是否应该按照LinkedList::Node::ItemType**Has
template <typename ItemType>
class HashSet {
int oldCapacity;
int capacity;
int size;
ItemType** HashArray;
HashSet() {
HashArray = new ItemType*[capacity] ;
memset(HashArray, 0, sizeof(ItemType*)*capacity);
size=0;
capacity = 0;
oldCapacity = 0;
}
void insert(const ItemType& item){
list <ItemType> *LinkedList= new list<ItemType>();
unsigned int index = hash(item);
if(HashArray[index]== NULL)
{
LinkedList->pushback(item);
HashArray[index] = LinkedList;
}
else if(!LinkedList->find(item)) //if it's not in the list
{
LinkedList->pushback(item);
HashArray[index] = LinkedList;
}
else //in list already
return;
}
}
首先,类的结尾必须有一个分号。我相信你的问题不是因为这个,但这仍然是一个错误。类HashSet{……};你有没有充分的理由不使用std::hash_映射容器,而不是重新发明轮子?是的-我想这应该有一个家庭作业标签-这是针对一个不允许使用任何std库容器的项目。正如我前面提到的,我的代码并不是为了简单而发布的