将Iterator用于STL列表数组的语法

时间:2014-11-22 07:48:35

标签: c++ arrays stl listiterator

我正在尝试制作一个模板化的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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在我看来,你只想要一个列表。此时List [i]返回指向列表&lt; T1&gt;的指针,而您可能希望List [i]成为列表&lt; T1&gt;本身。

尝试使用

list<T1> *List;