반응형
전통적인 반복문의 사용 예는 아래 예의 첫번째 for문과 같다.
struct Person
{
float weight;
float height;
};
Person persons[] = {
Person{70.f, 181.f},
Person{56.f, 167.f}
};
for (int i = 0; i < 2; ++i)
{
cout << persons[i].weight << persons[i].height << endl;
}
for (Person person : persons)
{
cout << person.weight << person.height << endl;
}
그리고 범위 기반 For문은 그 두번째의 예이다. 대단히 간결한 코드를 만들 수 있는 것이 장점이다. 하지만 사용에 있어서 주의할 점은 복사가 이뤄진다는 점이다.
for (Person person : persons)
{
person.weight = 0.f;
}
for (Person person : persons)
{
cout << person.weight<< " " << person.height << endl;
}
위의 코드에서 weight를 모두 0으로 변견한 것으로 보이지만 결과적으로는 변경되지 않았다. 여기서 정상적으로 weight를 변경하기 위해서는 다음과 같이 수정해준다.
for (Person& person : persons)
{
person.weight = 0.f;
}
for (Person person : persons)
{
cout << person.weight<< " " << person.height << endl;
}
이제 정상적으로 변경된 것을 볼 수 있다. 범위 기반 for를 사용하면 복사가 이뤄진다는 점이 중요하다.
반응형
'프로그래밍 이야기 > C++ 기초' 카테고리의 다른 글
[C++] 예제로 배우는 객체 지향 #1 (0) | 2020.11.24 |
---|---|
[C++] Protected Contructor (0) | 2020.11.24 |
[C++]Casting, Virtual function (0) | 2020.11.24 |
코드 컨밴션에 대한 고민 (0) | 2018.12.19 |
Bubble Sort (0) | 2018.11.23 |