首页 > 解决方案 > c++ for循环语法区别

问题描述

CLion linter 建议改变传统的 for 循环:

for (int i = 0; i < objects.size(); i++){
        auto object = objects[i];
        ...
    }

对于每个循环的基于范围(c++11 起):

for (auto & object : objects) {
        ...
    }

这个语法完全一样吗?我会争辩不,因为我至少在我更复杂的程序中得到了未定义的行为/崩溃。特别是在使用 的向量时shared_ptr

有什么理由会发生这种情况吗?

标签: c++for-loop

解决方案


所以,在我的情况下,在迭代它时修改向量时会显示主要区别。在这种情况下,基于范围的 for 循环会使程序崩溃,但基于整数的 for 循环将继续工作!感谢您的回答!


推荐阅读