범위 기반 루프의 몇 가지 예를 읽으면 두 가지 주요 방법 1 , 2 , 3 , 4 를 제안합니다.
std::vector<MyClass> vec;
for (auto &x : vec)
{
// x is a reference to an item of vec
// We can change vec's items by changing x
}
또는
for (auto x : vec)
{
// Value of x is copied from an item of vec
// We can not change vec's items by changing x
}
잘.
vec
항목을 변경할 필요가없는 경우 IMO, 예제에서는 두 번째 버전 (값 기준)을 사용하는 것이 좋습니다. 그들이 const
참조 하는 것을 제안하지 않는 이유 (적어도 직접적인 제안은 찾지 못했습니다) :
for (auto const &x : vec) // <-- see const keyword
{
// x is a reference to an const item of vec
// We can not change vec's items by changing x
}
더 좋지 않습니까? 그것이 반복되는 동안 각 반복에서 중복 사본을 피하지 const
않습니까?
const auto &x
당신의 세 번째 선택과 동등한 것이 지적되어야한다고 생각합니다 .