gpt4 book ai didi

c++ - 使用迭代器从两端开始在列表中移动并在中间停止

转载 作者:太空宇宙 更新时间:2023-11-04 16:01:16 24 4
gpt4 key购买 nike

我正在尝试为一些具有两个迭代器的代码创建一个 while 循环,一个从列表的开头开始递增,另一个从列表的结尾开始递减,希望它们在到达列表的中间并且整个列表已被覆盖。当用 vector 迭代器做类似的事情时,我只能做 while (limit > first),但这不起作用,并且在用列表迭代器完成时会出现编译器错误。我正在解决一本书的问题,该问题的任务要求是除了两个给定的迭代器之外,不在代码中分配任何新内存,并且无法弄清楚如何正确地移动列表的元素。

最佳答案

反向迭代器取消对前一个元素的引用,而不是它们内部引用的元素(“基础”)。 (有关直观解释,请参阅 this image。)

这意味着如果您有:

auto forward = a_list.begin();
auto backward = a_list.rbegin();

然后你交替递增forwardbackward,会有一段时间forward == backward.base()。您必须在递增每个 迭代器之后测试它,不能同时递增 否则它们可能会在您测试它们之前相互交叉。

关于c++ - 使用迭代器从两端开始在列表中移动并在中间停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547926/

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