【发布时间】:2023-03-14 10:16:02
【问题描述】:
假设我有一个 std::list<int> lst 和一些 std::list<int>::iterator it 用于遍历列表。并取决于我想在我的代码中使用it + 1 或it - 1 的it 的值。有没有像next()、prev() 这样的好方法(我在 stl 文档中找不到这样的东西)?还是我应该每次都复制it 并增加(减少)副本?
【问题讨论】:
-
当您执行
it++时,它会转换为it = it + 1,这意味着从技术上讲,迭代器对象每次都可以是一个新对象。不知道你在问什么。 -
复制和增加/减少副本是唯一的方法。您可以编写包装函数来隐藏它(正如答案中提到的,C++11 有
std::prev/std::next可以做到这一点。但它们是围绕这个“复制和递增”操作的包装器 -
谢谢@jalf。您的答案是唯一完整的答案。
-
@elusive 我已将
"it + 1"和"it - 1"放在引号中,因为它们不是双向迭代器的有效操作。你介意我把它们加回来吗? -
@MihranHovsepyan:如果你愿意,你可以把引号放回去。我不认为它们是必要的(因为已经很清楚这是你想要做的,但它不能做到)。谢谢,我会把它作为答案发布:)