중간에 vector<string> stooges에서 첫 번째 for문 for(auto :str :stooge) str== "Funny"를 하고 다음 for문을 돌려 stooge의 element를 확인했을 때 왜 값이 바뀌지 않은 건가요? 여기 말로는 str이 vector를 복사해서 그런 거라고 했는데 잘 이해가 가질 않아서;;
그 밑에 &str로 reference를 하면 바뀌더라고요.
원래 for문을 돌릴 때 array나 vector는 값을 복사하고 실행되는 건가요? 아니면 다른 값들도 다 마찬가지인가요?
vector를 복사하고 for문을 돌린다는 건 또 무슨 의미인가요?
for 돌릴때 반복자를 쓴게 아니잖아 그러면 당연히 임시저장할 변수가 필요하고 당연히 레퍼런스로 지정하지않으면 변수간 데이터 복사가 일어나 여기서 임시변수에 아무리 대입해봤자 실제 벡터가 들고있는 값에는 영향이 없는거지 - dc App
그러면 modern C++방식의 for문이 아니라 for(int i = 0; i < num; i++)이런 식으로 하면 데이터 복사가 안 이뤄진다는 뜻인가요?
그거는 상관이없어 벡터 원소에 어떻게 접근하느냐가 핵심임 본질을 봐야함 - dc App
이부분은 vs에서 디버그할때 최적화옵션 빼고 어셈블리어로 디버깅해보면 되게 직관적으로 이해할 수 있어 아니면 내부 클래스 구조를 타고가서 구현되있는걸 확인하던가 - dc App
엇 그건 제가 잘 몰라서;; 일단 감사합니다. 더 자세한 정보는 제가 따로 찾아볼게요
나중에 연산자 오버라이딩 할때 이해할거임 a = b 할때 왜 데이터복사가 일어나고 연산자 오버라이딩이 필요한지 - dc App