在C ++ 11中使用引用

时间:2012-09-16 08:28:45

标签: c++ reference for-loop foreach c++11

我承认我的C ++技能有点生疏,我正在潜入C ++ 11,开始我即将开始的新项目。如果我写的话,我刚刚发现了这种令人困惑的行为

void MyClass::update() {
    for(SomeClass &i : _list) {
        i.doStuff();
    }
}

void MyClass::update() {
    for(SomeClass i : _list) {
        i.doStuff();
    }
}

似乎完全相同,_liststd::list<SomeClass>。所以我想知道这里使用的是什么,因为我显然遗漏了一些东西。我应该提到我正在使用Xcode 4.4.1(4F1003)附带的Apple LLVM 4.0。

如果这是一个非常愚蠢的问题,请随意嘲笑和嘲笑我,我真的可以使用一些好的头部拍打:)

1 个答案:

答案 0 :(得分:4)

引用与容器无关,但与您正在取出的元素无关。在第一种情况下,您正在访问列表中的元素并对其进行修改,在第二种情况下,您将复制该元素,然后更改副本,无论如何都会超出范围。