ckrmsckrms19   6년 전

백준 강의를 들으며 코딩을 공부중인데

6603번 소스 코드 34번 줄에 백준님이 이렇게 쓰셨더군요
캡처.PNGfor loop 에서 : 이 range-based for loop 으로 쓰기 위한 것인 것도 알겠고, auto가 자동으로 데이터 타입을 추정해주는 것도 알겠는데, 여기서 &는 무슨 의미로 쓴 것인가요?;;

djm03178   6년 전

C++ 문법 중 하나인 참조자입니다.

ckrmsckrms19   6년 전

참조자인건 알고있는데 왜 저기에 쓰이나요? 찾아보니까 그냥 

for(auto v : ans) 이렇게 쓸 수 있는 것 같은데요;;

djm03178   6년 전

쓸 수는 있죠. 그런데 그냥 변수를 사용한다는 건 매번 객체가 복사되어 v에 대입된다는 뜻이기 때문에 비효율적이고, 혹시나 ans의 내용을 바꾸려고 해도 v를 통해 적용시킬 수가 없죠. 하지만 참조자를 쓰면 객체의 복사 없이 ans 벡터에 직접적으로 접근할 수 있으니 효율적이고요.

ckrmsckrms19   6년 전

아 python과 다른 식인가 보군요. python에서는 저런식으로 항상 써서 

여기도 그냥 vector ans를 iterate over 하는 줄 알았는데 아닌가보네요. 

그런데 참조자로 받았으면 *을 써야 하는 거 아닌가요?

djm03178   6년 전

*을 써야 하는 건 포인터고, 참조자는 평범한 변수처럼 그냥 쓰면 됩니다. 쉽게 말해서 같은 객체를 서로 다른 이름으로 쓰고 있는 것과 같습니다.

ckrmsckrms19   6년 전

아 이해됐습니다! 감사합니다!! 

댓글을 작성하려면 로그인해야 합니다.