我上了LinkedList的课。这是一个singly-linked-list,我想为这个类创建一个forward_iterator。,我已经编写了代码,我想知道我是否正确地实现了它。,我所提到的编写这段代码的来源是这里。
template <class T>
struct node
{
T data;
node *next;
};
template <class T>
class LinkedList
{
private :
node<T> *start;
unsigned int numElements;
// Assume all functions are implemented
};Iterator代码:
class iterator : public std::iterator<std::forward_iterator_tag,node<T>*>
{
node<T>* itr;
public :
iterator (node<T>* temp) : itr(temp) {}
iterator (const iterator& myitr) : itr(myitr.itr) {}
iterator& operator++ ()
{
itr = itr->next;
return *this;
}
bool operator== (const iterator& rhs)
{
return itr == rhs.itr;
}
bool operator!= (const iterator& rhs)
{
return itr != rhs.itr;
}
T& operator*()
{
return itr->data;
}
};上述实施是否正确?
如果没有,我应该做什么改变?还有什么其他的东西需要实现吗?
发布于 2014-12-23 08:51:46
我假设在
iterator& operator++ 是一个错误(尽管如此,编译器需要它们)。那么你只缺了两件事:
++算子->算子所以:
iterator operator++(int) {
iterator result(*this);
++*this;
return result;
}
T *operator->() {
return &itr->data;
}然后,...and满足了ForwardIterator概念的所有需求。
https://stackoverflow.com/questions/27616820
复制相似问题