基于C ++范围的for循环,是否复制了容器?

时间:2018-07-17 17:49:42

标签: c++ for-loop

在C ++中,可以像在

中那样遍历容器的每个元素(例如,以向量为例)。
-wbkit-paged-x

我对“ for”行为有疑问: 是将容器复制以用于for还是通过引用访问?

2 个答案:

答案 0 :(得分:8)

未复制容器。正在通过引用对其进行访问。但是,CustomObject正在为每个循环复制。编译器可以优化副本,但这不能保证。

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

答案 1 :(得分:0)

未复制容器。但是,将复制其中的每个元素。您可以通过使用&号指定它来更改它。那就是:

for (CustomObject &obj : container) {
     // Process obj
}

通常,处理大型容器时最好的决定。