首页 > 解决方案 > 基于 C++ 范围的 for 循环,容器是否被复制?

问题描述

在 C++ 中,允许遍历容器的每个元素(我们以向量为例),例如

vector<CustomObject> container;
//push back some objects in container

for(CustomObject obj : container){
    //process obj
}

我有一个关于“for”行为的问题:容器是被复制以在 for 中使用还是通过引用访问?

标签: c++for-loop

解决方案


容器没有被复制。它正在通过引用进行访问。但是,CustomObject正在为每个循环复制。编译器可能会优化掉副本,但这不能保证。

为防止CustomObject在此示例中复制 ,您可以这样做:for(CustomObject& obj : container)


推荐阅读