我已经重载了这些运算符来帮助我遍历一个双向链表,但是遇到了一个小错误,而且对于 c++ 来说还是新手,我被卡住了。我从来没有考虑过输入的“金额”是负数。所以我认为我需要在每个运算符中检查一个负数,因为它会极大地改变我遍历列表的方式,例如,如果我指向节点 5 并且我 +(-3) 我希望它移动向后三个节点,与 - 相同,5 - (-3) 将向前三个节点。逻辑似乎很简单,但语法令人困惑。以下是重载的运算符:
template <typename T>
typename doublyLinkedList<T>::iterator doublyLinkedList<T>::iterator::operator+(const int amount) const {
doublyLinkedList<T>::iterator tempClone(*this);
tempClone.pastBoundary=false;
T i;
for(i=0; i < amount; i++)
{
if(tempClone.current->forward == NULL)
{
tempClone.pastBoundary =true;
}else
{
++tempClone;
}
}
if(tempClone.pastBoundary == true)
{
return *this;
}else
{
return tempClone;
}
}
template <typename T>
typename doublyLinkedList<T>::iterator doublyLinkedList<T>::iterator::operator-(const int amount) const {
doublyLinkedList<T>::iterator tempClone(*this);
tempClone.pastBoundary=false;
T i;
for(i=0; i < amount; i++)
{
if(tempClone.current->backward == NULL)
{
tempClone.pastBoundary =true;
}else
{
--tempClone;
}
}
if(tempClone.pastBoundary == true)
{
return *this;
}else
{
return tempClone;
}
}