작성
·
346
0
3:52 에서 for (auto &element : v) 에서 & 를 붙이는 이유가 뭔가요??
& 안붙여도 똑같이 1,2,3 이 호출이 되는데 & 를 붙이는 이유가 따로 있나요?
답변 4
14
vector<int> v = {1, 2, 3, 4, 5};
for(auto & element : v) 를 사용하면
벡터 v 로 부터 element에 v[0] ... v[4] 의 레퍼런스들이 전달됩니다.
그 의미는 v[0]에 해당하는 1 이라는 값을 따로 복사하지 않아도 됩니다.
그리고 레퍼런스로 받았기 때문에, 위의 코드에서 cout << element 를 실행하면 element가 v[0...4]를 '참조' 했기 때문에 1, 2, 3, 4, 5가 출력됩니다.
for(auto element : v) 를 사용하면
벡터 v 로 부터 element에 v[0]의 1이라는 값이 복사되어 전달됩니다.
cout << element를 해도 여기서 element는 1이라는 값을 담은 변수이기때문에 똑같이 1, 2, 3, 4, 5가 출력됩니다.
결론은 int 기본 자료형 같은 경우는 위 두 경우의 차이가 미미 할 수 있으나, 내부적으로 map, vector 등을 포함한 클래스라면 값에 의한 전달(복사)이 매우 비효율적이기에 교수님께서 효율적인 코딩(참조, 포인터) 습관 형성을 위해 붙이지 않았나 싶습니다.
1
0
0