c++ - 基于 C++ 范围的 for 循环,容器是否被复制?
问题描述
在 C++ 中,允许遍历容器的每个元素(我们以向量为例),例如
vector<CustomObject> container;
//push back some objects in container
for(CustomObject obj : container){
//process obj
}
我有一个关于“for”行为的问题:容器是被复制以在 for 中使用还是通过引用访问?
解决方案
容器没有被复制。它正在通过引用进行访问。但是,CustomObject
正在为每个循环复制。编译器可能会优化掉副本,但这不能保证。
为防止CustomObject
在此示例中复制 ,您可以这样做:for(CustomObject& obj : container)
推荐阅读
- python - python将电子邮件转发到特定的Outlook文件夹win32com
- javascript - javascript 来识别它被再次点击,以反转它在最初点击时所做的更改
- javascript - 在 Tamper Monkey 中添加 git hub 存储库脚本
- list - 在没有 v-if 和 v-for 的 Vue.js 中显示(添加、编辑)和删除多个列中的列表项
- c# - 从 netcore c# 控制台应用程序调用 rust dll 时出现 System.BadImageFormatException
- python - Python pandas 列过滤子字符串
- css - Chrome中的CSS变换过渡动画重绘错误
- tensorflow - 我在将 tensorflow 导入为 tf 时出错?
- php - 如何使用具有关系 Laravel 的模型获取单个元素
- ios - iOS 13:如何在 UIKit/SwiftUI 中调整自定义字体的前导/下降/行高