본문 바로가기

코딩 공부/Unity C#

거꾸로 루프(Backwards for loop)

- 리스트에 있는 목록을 제거하려고 할 때 역방향 for루프를 사용할 수 있다

 

정방향으로 for루프를 실행하는 경우(반례)

 

x는 죽은 테디(제거해야 할 테디)를 뜻한다

- 인덱스 0 부터 시작하기 때문에 i 값도 0부터 시작한다

- 인덱스 1에 있는 테디를 죽이면 기존 오른쪽에 남아있는 요소들은 왼쪽으로 한 칸 씩 이동한다

- 기존 2에 있던 죽어야 할 테디가 1로 이동, 기존 3에 있던 살아있는 테디가 2로 이동

- i 값은 순차적으로 1씩 증가하므로 1에 있는 요소(기존 2에 있던 죽은 테디)의 처리를 할 수 없다


역방향으로 for루프를 실행하는 경우

위와 동일한 상황

- 인덱스 3부터 시작하기 때문에 i 값도 리스트의 크기값 3부터 시작한다 

- 3에 있는 생존테디를 넘긴 후 2에 있는 죽은테디를 삭제한다

- 2에 있는 테디를 삭제하면 오른쪽에 있던 기존 3의 테디가 왼쪽으로 한 칸 이동하여 2에 위치하게 된다

- 순차적으로 남은 테디들의 처리를 한다

 

역방향으로 하면 모든 테디의 처리를 할 수 있다.(4번 처리)

그에 반해 정방향은 처리 과정을 건너뛰는 테디가 있었다. (3번 처리)

 

'코딩 공부 > Unity C#' 카테고리의 다른 글

리스트를 사용하여 테디가 물건을 모을 수 있도록 하기  (0) 2024.07.07
foreach 루프  (0) 2024.07.05
DLL(Dynamic Link Library)  (0) 2024.07.05
리스트(List)  (0) 2024.07.04
배열(Array)  (0) 2024.07.04