作者:大街上 | 来源:互联网 | 2022-12-10 13:28
在C++中,允许迭代容器的每个元素(例如,让我们使用一个向量),就像在
vector container;
//push back some objects in container
for(CustomObject obj : container){
//process obj
}
我有一个关于"for"行为的问题:是否将容器复制用于for或通过引用访问?
1> 小智..:
容器未被复制.它是通过引用访问的.但是,CustomObject
正在为每个循环复制.编译器可以优化掉副本,但这不能保证.
要防止CustomObject
在此示例中进行复制,请执行以下操作:for(CustomObject& obj : container)
应该是`const CustomObject&`,除非需要修改值.