2014-11-22 3 views
1

충돌 해결에 별도 체인을 사용하는 템플릿 기반 HashTable 클래스를 만들려고합니다. 내 문제는 특정 배열 인덱스에서 목록을 반복하는 방법을 모르므로 구문이 확실하지 않기 때문입니다.STL 목록의 배열에 대해 반복자를 사용하기위한 구문

내가 점점 계속 오류 C2228 : 클래스/구조체/노동 조합 및 오류 C2228이 있어야합니다 '.END'왼쪽 '.push_front'의 왼쪽은

클래스/구조체/노동 조합이 있어야합니다 나는 선언했습니다 내 다음과 같이 클래스의 private 멤버로 나열하십시오.

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

목록이 하나 뿐인 것처럼 보입니다. 지금 List [i]는 목록 < T1>에 대한 포인터를 반환하지만 List [i]는 목록 < T1>이 될 수도 있습니다.

는 속임수를 썼는지

list<T1> *List; 
+0

사용해보십시오! 와플은 그것을 간과했다고 믿을 수 없습니다. 이제는 내 생성자에 문제가있는 것처럼 보입니다 ... 이제 어떻게 선언해야합니까? –

+0

목록 [i] = 새 목록 [소수]; –

+0

목록 변수가 목록 의 배열을 가리 키도록하려면 동적으로 할당해야합니다. List = new list [소수]; 이것은 "소수"의 목록 요소를 만듭니다. 기본 "생성자"가 필요하며 "기본"횟수만큼 실행됩니다. 배열의 특정 목록에 액세스하려면 List [i]를 사용하십시오. –