Как вернуть Iterator — список & lt; T & gt; :: iterator, в качестве возвращаемого значения функции

Я реализовывал абстрактный контейнер хеш-таблицы. мой find() Функция правильно определена и работает нормально, как показано ниже:

template <class HashedObj>
HashedObj& HashTable<HashedObj>::find(const HashedObj &x){
typename list<HashedObj>::iterator itr;
itr = std::find(theList[hash(x)].begin(), theList[hash(x)].end(), x);
if(itr == theList[hash(x)].end())
return ITEM_NOT_FOUND;
else
return *itr;
}

Тем не менее, я хочу определить другую функцию под названием findAddress() это возвращает itr (итератор) вместо *itr, Мой код:

typedef list<HashedObj>::iterator iterator;
template <class HashedObj>
iterator HashTable<HashedObj>::find(const HashedObj &x){
return std::find(theList[hash(x)].begin(), theList[hash(x)].end(), x);
}

Выше будет жаловаться, что:

type std::list<HashedObj, std::allocator<_CharT> > is not derived from type
HashedTable<HashedObj>.

В основном я хочу вернуть тип итератора, который был определен std до.

0

Решение

Я не эксперт, но обе функции имеют одно и то же имя в указанном коде, принимая один и тот же параметр. Это нормально? Кроме того, я предполагаю, что вы имеете в виду «функцию под названием findAddress()«вместо» класс называется findAddress()».

0

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

Других решений пока нет …

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