• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

for (auto &element : v) 에서 & 를 붙이는 이유가 뭔가요??

20.03.10 11:21 작성 조회수 215

0

3:52 에서 for (auto &element : v) 에서 & 를 붙이는 이유가 뭔가요??

& 안붙여도 똑같이 1,2,3 이 호출이 되는데 & 를 붙이는 이유가 따로 있나요?

답변 4

·

답변을 작성해보세요.

14

coconut님의 프로필

coconut

2020.03.11

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

reference로 사용하기 위해서입니다. 학생이 무엇을 알고 무엇을 모르는지 저는 알 방법이 없습니다. 

0

dlengus14님의 프로필

dlengus14

질문자

2020.03.11

레퍼런스인건 아는데, 왜 그냥 auto element 라고 하지 않고 auto &element 로 레퍼런스로 넣어주나요?

0

reference입니다.