2
我的C++代码有点问题。我在头变量列表,列表中的最后和实际节点(下图)链表,我需要让我自己的(学校工作)迭代器..C++自己的迭代器
list http://www.attanon.eu/list.png
我有。
我的类迭代器是本
class iterator
{
Node* _node;
public:
iterator(Node* node) : _node(node){}
~iterator(){ _node = nullptr; }
iterator& operator=(const iterator& other)
{
_node = other._node;
return *this;
}
bool operator==(const iterator& other)
{
if (_node == nullptr || other._node == nullptr)
{
return false;
}
else
{
return _node->_data == other._node->_data;
}
}
bool operator!=(const iterator& other)
{
if (_node == nullptr || other._node == nullptr)
{
return false;
}
else
{
return _node->_data != other._node->_data;
}
}
iterator& operator++() // prefix
{
if (_node != nullptr)
{
_node = _node->_next;
}
return *this;
}
iterator operator++(int) // postfix
{
iterator temp(*this);
++(*this);
return temp;
}
T& operator*() // dereference
{
return _node->_data;
}
T* operator->() // šipková notace
{
return &*(List<T>::iterator)*this;
}
};
,我需要做的方法开始和结束的迭代throught名单。
我尝试这种方式,但与此实现我没有得到列表的最后一个节点。
iterator begin()
{
return iterator(_head);
}
iterator end()
{
return iterator(_last);
}
任何人都可以帮助我如何使这两种方法?
P.S.对不起,我的英语不好,我知道。
感谢您的帮助
编辑:
我的节点类是该
class Node
{
public:
T _data;
Node* _next;
};
我用它进行循环测试..
for (List<int>::iterator it = list->begin(); it != list->end(); it++)
{
std::cout << *it << std::endl;
}
我找到了这种方式,但有了这个我需要重做我的迭代器操作符,因为它没有显示任何想法。 – JAttanonRadar 2014-12-13 18:40:25
@JAttanonRadar你的意思是“它没有显示任何东西”是什么意思? – Shoe 2014-12-13 18:42:36
如果我使用测试功能,它不是列表中的数据.. – JAttanonRadar 2014-12-13 18:44:14