散列集实现使用动态分配的链接列表实现数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了散列集实现使用动态分配的链接列表实现数组相关的知识,希望对你有一定的参考价值。

我遇到了模板概念的麻烦。我的链表类是模板化的,我的哈希集也是如此。

在我的哈希集的私有变量中,我表示这样的集合:

LinkedList<T>* hashTab;

我得到了错误

expected member name or ';' after declaration specifiers
**LinkedList<T>*** hashTab;

这是我默认构造哈希集的方式

hashTab = new LinkedList[DEFAULT_CAPACITY];
capacity = DEFAULT_CAPACITY;

这些类位于同一文件夹中的单独头文件中。可能是这个错误的原因是什么?

例:

A.hpp

template<typename T>
class A{
    public: 
    A();
};

Bihp

#include "A.hpp"

template<typename T>
class B{
    private:
    A<T>* hashTab;
    public: 
    B();
};

template <typename T>
B::B(){
    hashTab = new A[10];
}
答案

在类之外定义模板成员函数时,必须提供B的模板参数,并且必须始终为成员A<T>*提供它们:

template <typename T>
B<T>::B(){
    hashTab = new A<T>[10];
}

Demo

以上是关于散列集实现使用动态分配的链接列表实现数组的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript Hashmap散列算法

JavaScript Hashmap散列算法

数据结构--解决散列冲突,分离链接法

python Redis散列集的python

是否可以在不重新分配的情况下实现动态数组?

浅谈HashMap实现原理