gpt4 book ai didi

C++ 自己的迭代器

转载 作者:搜寻专家 更新时间:2023-10-31 00:13:16 29 4
gpt4 key购买 nike

<分区>

我的 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;
}
};

而且我需要使方法开始和结束以遍历列表。

我用这种方式尝试过,但是通过这个实现我没有得到列表的最后一个节点。

iterator begin()
{
return iterator(_head);
}

iterator end()
{
return iterator(_last);
}

谁能帮我实现这两种方法?

附言对不起我的英语,我知道这不好。

感谢帮助

编辑:

我的节点类是这样的

class Node
{
public:
T _data;
Node* _next;
};

我用这个 for cycle 来测试..

for (List<int>::iterator it = list->begin(); it != list->end(); it++)
{
std::cout << *it << std::endl;
}

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com