Я смотрю на реализацию связанного списка, используя шаблоны.
В настоящее время после просмотра некоторых руководств мне удалось создать работающее, но мне интересно, какова цель указателя шаблона? Код, кажется, использует их произвольно. Я приведу пример для моего кода заголовка ниже:
template <class T>
class LinkedList{};
template <class T>
class LinkedList<T*>{
private:
Node<T*> *first;
int size;
public:
class Iterator{
public:
Iterator(Node<T*> *newElem){
elem = newElem;
}
virtual ~Iterator(){
}
T getValue(){
return *(elem->getValue());
}
void next(){
elem = elem->getNext();
}
void operator++(int i){
next();
}
void operator++(){
next();
}
T operator*(){
return getValue();
}
bool operator==(const Iterator& rhs){
return (elem == rhs.elem);
}
bool operator!=(const Iterator& rhs){
return (elem != rhs.elem);
}
bool hasNext(){
if (elem == NULL)
return false;
return true;
}
private:
Node<T*> *elem;
};
В этом конкретном контексте, зачем нам объявлять переменную узла или связанный список с помощью ? В моем случае все работает нормально, используя , но я, скорее всего, что-то упустил. Класс Node (не указан выше) также реализован с использованием , так что же на самом деле происходит, когда вы добавляете туда этот указатель?
Большое спасибо!