[C++] std::transform
# std::transform
@1
std::transform(InputIterator begin1, InputIterator end1, OutputIterator begin2, UnaryOperation op);
InputIterator의 주어진 범위내의 값들을 op에 적용한 후 outputIterator의 시작점부터 결과를 작성해준다.
ex)
std::vector<int> itr1;
std::vector<int> itr2;
for.... itr1.push_back .. // -> itr1 : 1, 3, 5, 7, 9
itr2.resize(itr1.size()); // itr2에 itr1과 동일한 크기의 메모리를 할당해줌
std::transform(itr1.begin(), itr1.end(), itr2.begin(), [](int i){return i+1;});
// itr2 : 2, 4, 6, 8, 10
@2
std::transform(InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, OutputIterator begin3, BinaryOperation op);
InputIterator1의 주어진 범위내의 값들을 InputIterator2의 값들과 binaryOperation을 수행한 후 outputIterator의 시작점부터 결과를 작성해준다.
ex)
std::vector<int> itr1; // itr1 : 10, 20, 30, 40
std::vector<int> itr2; // itr2 : 15, 25, 35, 45
std::transform(itr1.begin(), itr1.end(), itr2.begin(), itr1.begin(), std::plus<int>());
// itr1 : 25, 45, 65, 85