C++ 哈希表中未知大小stl列表数组的构造函数

C++ 哈希表中未知大小stl列表数组的构造函数,c++,arrays,stl,hashtable,C++,Arrays,Stl,Hashtable,我试图创建一个模板哈希表来存储指向对象的指针。这些对象来自一个基类序列,其中3个类来自DNARNAAA。我的主要问题是,我不确定如何为我的哈希表类设置构造函数。我已经定义了哈希函数和键方法,但无法测试它们。我的问题是,哈希表的桶数事先不知道。它是从文件中读取的,因此在实例化对象时,数组的大小是未知的。哈希表使用单独的链接来解决冲突,因此std::list。我已将我的列表声明为类的私有成员哈希表 std::list<T> *table; 我还在类构造函数中声明了哈希对象 Sequen

我试图创建一个模板哈希表来存储指向对象的指针。这些对象来自一个基类
序列
,其中3个类来自
DNA
RNA
AA
。我的主要问题是,我不确定如何为我的哈希表类设置构造函数。我已经定义了哈希函数和键方法,但无法测试它们。我的问题是,哈希表的桶数事先不知道。它是从文件中读取的,因此在实例化对象时,数组的大小是未知的。哈希表使用单独的链接来解决冲突,因此
std::list
。我已将我的列表声明为类的私有成员
哈希表

std::list<T> *table;
我还在类构造函数中声明了哈希对象

SequenceDatabase::SequenceDatabase(){
HashTable<Sequence*> hash; 
}

我的主要问题是,我是否必须在
哈希表中创建一个公共方法来设置
SequenceDatabase
中数组的大小?我可以在
哈希表
构造函数中使用这样的方法吗。我该怎么做呢?感谢您的帮助

为什么要使用指向列表的指针而不是列表向量?您需要
table=new std::list[num_bucket]
,或者更好的是在初始化器列表ala
HashTable():table(新std::list[num_bucket]){…}
SequenceDatabase::SequenceDatabase(){HashTable hash;}
应该做什么?这是一个临时的,当构造函数返回时会被销毁;将其设置为成员变量。您没有在构造函数中声明哈希对象,而是声明了另一个具有相同名称的完全不同的对象。@TonyD这是从中读取数据的文件。存储桶的数量也从文件中读入,并且事先不知道。@molbdnilo,它是一个单独类的构造函数。这是我的教授人为造成的。哈希表应该存储指向具有getKey()方法的对象的指针,该方法是Sequence类的公共方法。
HashTable<Sequence*> hash;
SequenceDatabase::SequenceDatabase(){
HashTable<Sequence*> hash; 
}
// function reads in the filename creates a data stream
void SequenceDatabase::importEntries(std::string inputFile){
std::ifstream dnaFile(inputFile);
char command;                           // ***************
std::string label, sequence, type;      // local variables
int buckets, id, length, index, orf;    // ***************
dnaFile >> buckets;
while(dnaFile >> command){
    Sequence* s;
    // if the command = D this allocates memory for a dna object and adds it to the hash table
    if(command == 'D'){
        dnaFile >> label >> id >> sequence >> length >> index;
        std::cout << "Adding " << label << " ...\n\n";
        s = new DNA(label, id, sequence, length, index);