코딩의기술 - 오즈 모리하루::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의 람다식을 사용해서 반복문을 일반화하도록 하자!
댓글
댓글 쓰기