在 C++11 中使用参考文献

Use of reference in C++11 for

本文关键字:参考文献 C++11      更新时间:2023-10-16

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

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

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

它似乎完全相同,_list是一个std::list<SomeClass>。所以我想知道这里的 ref 有什么用,因为我显然错过了一些东西。我应该提到我使用的是Xcode 4.4.1(4F1003)附带的Apple LLVM 4.0。

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

引用与

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