코딩의기술 - 오즈 모리하루::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);
}
댓글
댓글 쓰기