Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C++模板对C++对象的指针数组_C++_Arrays_Pointers - Fatal编程技术网

使用C++模板对C++对象的指针数组

使用C++模板对C++对象的指针数组,c++,arrays,pointers,C++,Arrays,Pointers,我有两个问题,首先我试图创建一个哈希表:我是否正确地实例化了数组?我试图创建指向链接列表的指针的动态数组以进行链接:链接列表节点按值存储。我认为我的ItemType**语法不正确,尽管我不确定:这是我的理解,如果我错了,请纠正我 第一个*将“HashArray”实例化为数组,然后第二个*将其实例化为指向每个链表头的指针数组:我应该指向一个节点。节点嵌套在LinkedList中;虽然它是公开的。无论如何,这听起来很荒谬,但它是否应该按照LinkedList::Node::ItemType**Has

我有两个问题,首先我试图创建一个哈希表:我是否正确地实例化了数组?我试图创建指向链接列表的指针的动态数组以进行链接:链接列表节点按值存储。我认为我的ItemType**语法不正确,尽管我不确定:这是我的理解,如果我错了,请纠正我

第一个*将“HashArray”实例化为数组,然后第二个*将其实例化为指向每个链表头的指针数组:我应该指向一个节点。节点嵌套在LinkedList中;虽然它是公开的。无论如何,这听起来很荒谬,但它是否应该按照LinkedList::Node::ItemType**HashArray的思路读取一些内容? 有什么建议吗

编辑:为了简单起见,我没有包括复制/删除/分配构造函数:

编辑2:我也没有包括我的“哈希函数”/“增长函数”/“收缩函数”。显然,在我事先编写好插入和模板之前,编写删除函数等是没有意义的。。。让我知道,如果这将有助于张贴更多的我有什么。现在我遇到了编译错误

C2440:“=”:无法从“列表<类型>”*”转换为“标准::字符串*” 在线上

HashArray[index]=链接列表

这将有助于解决这个问题

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库容器的项目。正如我前面提到的,我的代码并不是为了简单而发布的