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)
-
- 단항:
unary_op(*it)결과를 출력에.
- 단항:
-
- 이항: 두 범위의 대응 요소를 받는
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은 함수 결과로 새 순서를 만들어요. 요소를 변환해 매핑할 때 주로 씁니다.