모두의 코드 커뮤니티

범위 기반 For문 도중에, 배열이 중간에 변경되면 어떤일이 일어나나요?

for(auto &element : element_array)
이렇게 된다는 가정 하에, for문이 돌아가는 도중에, element_array의 마지막 원소가 삭제됬다면, 예외가 발생하나요?

좋아요 1

원소를 삭제한다는게 마지막 원소에 0 을 넣어준다는 만든다는 말인가요?
0 으로 만드는 경우면 아무 문제 없이 잘 실행됩니다.

vector의 size가 줄어들때입니다
예) vector vec1 {1, 1, 1}
-> vector vec1 { 2, 2 }

좋아요 1

작동하지 않을 것 같네요.

작동하지 않는다는게 정확히 무슨뜻일까요?
작동하지 않는다는게 바뀌기 전의 3번째 원소는 처리가 안된다는걸 말하시는건가요?
이게 맞다면 레퍼런스가 아닌
for(auto element : element_array)
이런식으로 처리할경우 element_array가 복사되어 진행되기때문에 element_array가 위처럼 중간에 변경되도 3번째 원소까지 정상적으로 처리되는게 맞는건가요? 또한, 레퍼런스로 vector for begin 문을 처리하는 도중에, 3번째 원소를 처리하는 도중, vector의 크기가 2로 줄어들면 예외가 발생하는지도 궁금합니다.