c++ - 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
。
有什么理由会发生这种情况吗?
解决方案
所以,在我的情况下,在迭代它时修改向量时会显示主要区别。在这种情况下,基于范围的 for 循环会使程序崩溃,但基于整数的 for 循环将继续工作!感谢您的回答!
推荐阅读
- oauth-2.0 - Spring Cloud Security:如何为 Oauth2 资源服务器/OAuth2 授权服务器支持多个身份提供者?
- laravel - Laravel 雄辩的集合查询
- html - 尝试使用 Excel VBA 在 IE11 中选择单选按钮
- arrays - Perl:将数组元素复制到单个字符串中
- c# - 我可以将我的本地 Azure 函数连接到我的 CosmosDB 数据库,但是当我在 Azure 上发布代码时,它无法再连接
- android - 将图像从 ImageView 保存到存储
- c# - StreamWriter 的默认 UTF-8 编码器不返回 Preamble
- react-native - TypeError:null 不是对象(评估'_ReanimatedModule.default.createNode')
- r - 更改 R 中“损坏的”.xml 文件中的值
- javascript - Google appscript 无法识别基于 Chromium 的 Edge