首页 > 解决方案 > 是否可以查看 range-for 循环中的下一个元素?

问题描述

说我有这个:

void test(std::vector<int>& my_ints) {
    for (auto& my_int : my_ints) {
        if (my_int == 5 && /* not the last value in the vector */) {
            my_int += /* next value in the vector */;
        }
    }
}

是否有任何有效的语法可以替换评论?

PS!是的,我知道,带有常规 for 循环的小菜一碟,但我想看看我是否可以对这类东西使用 range-for 循环。

标签: c++

解决方案


是否可以偷看下一个元素

在一般情况下 - 不。

由于其中的对象std::vector是连续存储的,您可以这样做*(&my_int + 1),但如果您稍后更改容器,代码可能会静默中断。不要那样做!


要检查当前元素是否是最后一个元素,您可以使用&my_int == &my_ints.back().


推荐阅读