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]
,或者更好的是在初始化器列表alaHashTable():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);