changwonchun   1년 전

도저히 이해가 되지 않는 게 있어서 질문드립니다.

우선, vec이랑 *vecptr이랑 같다고 알고 있어서 첫 번째 for문에서 i와 (*vecptr).at(i)를 출력해봤는데 전자는 0이 출력되고 후자는 1만 출력되더라고요. 대체 어떻게 된 일인지 모르겠습니다.

또 뒤에 이어지는  for문에서 값을 0으로 바꿨는데 해당 스코프 내에서만 변경이 되었는지 두 번째 for문을 돌려보니 vec의 값이 그대로더라고요. 혹시 vector만 그런가 해서 array로도 돌려봤는데 결과는 똑같았습니다.

결국 값을 바꾸려면 i가 아니라 vec[i], 혹은 arr[i]를 써야 바뀐다는 걸 확인했는데 왜 그런 건가요???

0000000000   1년 전

for(int i : vec)으로 하면 여기서의 i는 원본이 아닌 원본의 복사본이 됩니다. 따라서 복사본의 값을 바꾸어도 원본은 그대로이기 때문에 변화가 없게 됩니다.

changwonchun   1년 전

늦었지만 답변 감사합니다!

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