transform

transform (변환)

범위의 각 요소에 함수를 적용해 변환된 결과를 출력하는 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

transform은 범위(또는 두 범위)의 각 요소에 함수를 적용한 결과를 출력에 써요.

template< class InputIt, class OutputIt, class UnaryOperation >
OutputIt transform( InputIt first1, InputIt last1,
                    OutputIt d_first, UnaryOperation unary_op );   // (1)

template< class InputIt1, class InputIt2, class OutputIt, class BinaryOperation >
OutputIt transform( InputIt1 first1, InputIt1 last1,
                    InputIt2 first2, OutputIt d_first,
                    BinaryOperation binary_op );   // (2)
    1. 단항: unary_op(*it) 결과를 출력에.
    1. 이항: 두 범위의 대응 요소를 받는 binary_op(a, b) 결과를 출력에.
std::vector<int> v{1, 2, 3, 4};
std::vector<int> out(4);
std::transform(v.begin(), v.end(), out.begin(),
               [](int x){ return x * 2; });
// out == {2,4,6,8}

for_each가 부작용을 수행하는 반면, transform은 함수 결과로 새 순서를 만들어요. 요소를 변환해 매핑할 때 주로 씁니다.

더 알아보기 (Learn more)

cppreference