使用模板在c ++中指向对象的指针数组

时间:2012-04-09 04:28:07

标签: c++ arrays pointers

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

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

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

编辑2:我也没有包含我的'hash'/'grow function'/'shrink function'。显然没有必要编写一个删除函数等,直到我写入插入和模板预先工作...让我知道是否有助于发布更多我有的东西。现在我收到编译错误

C2440:'=':无法转换'list<键入>' *'到'std :: string *'
在线

HashArray [index] = LinkedList;

这应该有助于确定问题

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;

}
}

0 个答案:

没有答案