코딩의기술 - 오즈 모리하루::for 반복문 감축과 단순화 -2


람다식을 활용한 반복문 일반화

   for (int y = 0; y < HEIGHT; ++y ) {
      for (int x = 0; x < WIDTH; ++x ) {
         block[y][x].update(deltaTime);
      }
   }
   for (int y = 0; y < HEIGHT; ++y ) {
      for (int x = 0; x < WIDTH; ++x ) {
         block[y][x].draw();
      }
   }

반복문 부분을 함수화해서 일반화합니다.

void each(std::function<void (Block&) > action ) {
    for (int y = 0; y < HEIGHT; ++y ) {
       for(int x = 0; x < WIDTH; ++x ) {
           action(block[y][x]);
       }
    }
}

std::function은 람다식, 함수 포인터, 함수 객체를 대입할 수 있는 범용적인 함수 래퍼 클래스.
(람다식 또는 함수 포인터를 대입해 변수를 생성하는 기능이라고 한다.)

for 반복문의 중복은 코드를 복잡하게 만드는 원인이다.
 C++11의 람다식을 사용해서 반복문을 일반화하도록 하자!

댓글

이 블로그의 인기 게시물

실내공간 표준안 IndoorGML의 개념 및 활용(이기준, 이지영)('13.06.24 심사완료) 정리.

플랫폼과 에코시스템