c++ - 如何使用迭代器在列表中导航? (C++)

标签 c++ iterator listiterator

我的代码是

list<int> foo;
    for (int i = 0; i < 20; i++) {
        foo.push_back(i);
    }
    for (std::list<int>::iterator it = foo.begin(); it != foo.end(); it++)
        std::cout << *it << ' ';

我希望我的迭代器增加 3

输出将是:

0 3 6 9 12 15 18

代替:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

最佳答案

在列表中,您不能立即将迭代器推进n(例如it+3),因为它不是随机访问迭代器。但是,您可以将迭代器递增 3 次:++(++(++it)))

正如评论中所指出的,您可以使用 std::advance(it,3) 但对于列表迭代器,它将归结为重复调用 ++it 3 次。

关于c++ - 如何使用迭代器在列表中导航? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22728194/

相关文章:

c++ - 将标准输出转发到 Qt 应用程序中的文件

python - 返回给定字典键的下一个键,python 3.6+

c++ - 迭代器生命周期

java - 在迭代时将项目添加到链表是否安全

iterator - 在 Boost Graph Library 中,为什么添加边会使边迭代器失效(以及其他问题)?

c++ - 在菱形继承(钻石问题)中更喜欢一个类的变量

C++ - 播放正弦波产生的音调

java - 编写一个从 arraylist 返回迭代器的方法

c++ - double 需要多长时间才能在 12 个字节中容纳这么多字符?