Inflearn Community Q&A
for (auto &element : v) 에서 & 를 붙이는 이유가 뭔가요??
Written on
·
433
0
3:52 에서 for (auto &element : v) 에서 & 를 붙이는 이유가 뭔가요??
& 안붙여도 똑같이 1,2,3 이 호출이 되는데 & 를 붙이는 이유가 따로 있나요?
Quiz
함수 정의 시 사용하는 '매개변수(parameter)'와 함수 호출 시 전달하는 '실인자(argument)'의 가장 큰 차이점은 무엇인가요?
전달되는 값의 타입
선언 시 사용되는 이름
함수 정의/선언 시 사용되는지, 호출 시 사용되는지
메모리 주소가 동일한지 여부
Answer 4
15
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





