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


반복문 내부의 처리는 최대한 간단하게 만들어야한다.


for문을  STL 알고리즘 함수로 변경한다.


   for ( iter i = actors.begin(); i != actors.end(); ++i ) {
      (*i) -> draw();
   }

for_each 함수와 men_fun 함수를 함께 사용해서 for 문을 안쓰는 형태로 변경.

 
   std::for_each(actors.begin(), actors.end(), std::mem_fun(&Actor::draw));

 람다식을 사용한 예

   std::for_each(actors.begin(), actors.end(),
      [](Actor* actor) { actor -> draw(); });


검색 반복문 분리

 검색을 하면서 공격 중임.(2가지 하는 중...)

   for (iter i = actors.begin(); i != actors.end(); ++i ) {
      if ((*i) -> distance(position) <= 5) {
         attack(*i);
         break;
      }
   }

 검색의 반복문 분리 STL find_if
  
    auto target = std::find_if(actors.begin(), actors.end(),
       [&](Actor* actor) { return actor->distance(position) <= 5; });
    if (target != actors.end()) {
        attack(*target);
    }

댓글

이 블로그의 인기 게시물

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

플랫폼과 에코시스템