我正在尝试编写代码,遍历“pointNodes”列表,并打印每个节点的当前、前一个和后一个节点的x变量 - 除了列表中的第一个和最后一个节点,它们分别使用最后一个节点代替前一个节点和第一个节点代替下一个节点。
以下是打印列表的代码:
我知道list.end并不是链表中的最后一个节点。但我仍然不确定如何处理最后一个节点,因此需要您的帮助。我已经尝试使用 "if (pointList.back())" ,但这会导致错误消息“no operator matches these operands”。
谢谢!
以下是打印列表的代码:
n = 1;
p = 1;
for (i = pointList.begin(); i != pointList.end(); ++i)
{
if (i == pointList.begin()) // for the first node, works fine
{
cout << "First node! x is " << i->getX() << ", next X var is " << next(point, n)->getX() << ", previous X is " << pointList.begin()->getX() << " (n is(" << n << "), p is(" << p << ")" << endl;
n = n + 1;
p = p - 1;
}
else if (i == pointList.end()) // problem bit
{
cout << "Last node! x is " << i->getX() << ", next X var is " << pointList.begin()->getX() << ", previous X is " << prev(point, p)->getX() << " (n is(" << n << "), p is(" << p << ")" << endl;
n = n + 1;
p = p - 1;
}
else // for everything inbetween, works fine.
{
cout << "x is " << i->getX() << ", next X var is " << next(point, n)->getX() << ", previous X is " << prev(point, p)->getX() << " (n is(" << n << "), p is(" << p << ")" << endl;
n = n + 1;
p = p - 1;
}
}
我知道list.end并不是链表中的最后一个节点。但我仍然不确定如何处理最后一个节点,因此需要您的帮助。我已经尝试使用 "if (pointList.back())" ,但这会导致错误消息“no operator matches these operands”。
谢谢!
pointList.back()
返回最后一个元素的引用,而pointList.end()
返回迭代器。你不能直接将它们等同地用作任何操作的参数。 - πάντα ῥεῖ