Синтаксис использования Итератора для массива списков STL

Я пытаюсь создать шаблонный класс HashTable, который использует Seperate Chaining для разрешения коллизий. Моя проблема в том, что я не знаю, как перебирать список по конкретному индексу массива, потому что я не уверен в синтаксисе.

Я продолжаю получать ошибку C2228: слева от .end должен быть класс / структура / объединение
и ошибка C2228: слева от .push_front должен быть класс / структура / объединение

Я объявил свой список в качестве частного члена класса следующим образом:

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

Решение

Мне кажется, что вы хотите только один массив списков. Прямо сейчас List [i] возвращает указатель на список<T1>, тогда как вы можете использовать List [i] как список<T1> сам.

Попробуйте использовать

list<T1> *List;
0

Другие решения


По вопросам рекламы [email protected]