我正在尝试制作一个模板化的HashTable类,它使用Seperate Chaining进行冲突解决。我的问题是我不知道如何在特定的数组索引处遍历列表,因为我不确定语法。
我不断收到错误C2228:'。end'的左边必须有class / struct / union 和错误C2228:'。push_front'的左边必须有class / struct / union
我已将我的列表声明为该类的私有成员,如下所示:
list<T1> **List;
并使用默认构造函数使用for循环预填充每个索引。
以下是问题点:
template <typename T1>
void HashTable<T1>::Insert(T1 var)
{
int index = HashFunction(var);
List[index].push_front(var);
++LF;
cout << "Load Factor: " << LF << endl << endl;
}
template <typename T1>
void HashTable<T1>::Delete(string key)
{
int visited = 0;
list<T1>::iterator iter;
for(int i = 0; i < prime; ++i)
{
iter = List[i].begin();
while((iter != List[i].end) && ((*iter)->getKey() != key)) //While iter is not at the end of the list and while ID of iter is not equal to ID being obliterated
我做错了什么?
答案 0 :(得分:0)
在我看来,你只想要一个列表。此时List [i]返回指向列表&lt; T1&gt;的指针,而您可能希望List [i]成为列表&lt; T1&gt;本身。
尝试使用
list<T1> *List;