对于一个项目,我们的任务是使用迭代器创建一个双向链接列表。对于其中一个问题,我们将向迭代器添加一个数字以跳转到该位置。当我添加到迭代器时,我不断遇到分段错误,我需要帮助找出我做错了什么。
class Iterator
{
public:
Iterator operator +=(int add)
{
if (add > 0)
{
for (int i = 0; i < add; ++i)
{
cursor_ = cursor_->getNext();
}
return *this;
}
else
{
for (int i = 0; i > add; ++i)
{
cursor_ = cursor_->getPrev();
}
return *this;
}
}
private:
Node* head_ = nullptr;
Node* tail_ = nullptr;
Node* cursor_ = nullptr;
};
int position = 7;
cursor_ += position;
当我添加到cursor_时,出现分段错误
cursor_有7个getNext元素吗?如果没有,您就有获得 nullptr 节点的风险。另外,如果添加 < 0, you want to do
--i
,而不是 ++i
。