for_each

for_each (각 원소에 함수 적용)

범위의 각 요소에 호출 가능 객체를 적용하는 알고리즘이에요. 반환 값은 무시돼요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

for_each는 대상 범위 [first, last)의 각 요소에 주어진 호출 가능 객체 f를 적용해요. f가 결과를 반환해도 그 결과는 무시돼요.

template< class InputIt, class UnaryFunc >
UnaryFunc for_each( InputIt first, InputIt last, UnaryFunc f );   // (1)
    1. 범위를 순서대로 순회하며 f(*it)(또는 f(*it, it) 등)을 적용해요. 반환 값은 f 자체예요(C++11부터).
    1. 실행 정책 버전(C++17)은 반환 타입이 void예요.

C++20부터 constexpr 지원이 붙었어요.

std::vector<int> v{1, 2, 3, 4};
std::for_each(v.begin(), v.end(), [](int& x){ x *= 2; });
// v == {2,4,6,8}

각 요소에 "부작용"을 수행하는 반복문을 대체하는 알고리즘이에요. 요소를 변환해 새 범위로 만드는 건 std::transform, 새 값으로 새 범위를 만드는 데는 std::generate 등을 써요.

더 알아보기 (Learn more)

cppreference