std::transfrom
cppreference : std::transform
https://en.cppreference.com/w/cpp/algorithm/transform
인자로는
1. 입력 범위의 시작 이터레이터
2. 입력 범위의 끝 이터레이터 (끝은 포함X)
3. 결과 저장을 시작할 이터레이터
4. 단항 연산
template< class InputIt, class OutputIt, class UnaryOp >
OutputIt transform(InputIt first1, InputIt last1, OutputIt d_first, UnaryOp unary_op );
사용예시 : 벡터의 원소 2배 만들기
자기자신의 연산을 자기자신에게 저장한다.
std::transform(numbers.begin(), numbers.end(), numbers.begin(), [](int n) {
return n * 2; // 두 배로
});
사용예시 : 다른 벡터에 저장하기
결과를 받는 쪽에서 미리 공간을 할당해놓지 않았을 경우 std::back_inserter 를 활용할 수 있다.
std::back_inserter
동적으로 크기가 변할 수 있는 컨테이너와 같이 사용함. 결과를 저장할 컨테이너의 크기를 알 수 없을 때 사용
push_back 할 때 동적으로 늘어나는 것과 동일하다고 생각하면 된다.
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::vector<int> squared;
// 결과를 새로운 벡터에 저장
std::transform(numbers.begin(), numbers.end(), std::back_inserter(squared), [](int n) {
return n * n; // 제곱
});
'🌍 C++ Study > C++ 기초' 카테고리의 다른 글
C++ 역방향 반복자 rbegin() / rend() / base() (0) | 2024.11.20 |
---|---|
C++ vector 두 벡터 합치기, 이어 붙이기 (0) | 2024.11.20 |
C++ std::distance 이터레이터의 거리 구하기 (0) | 2024.11.20 |
C++ vector의 부분 벡터 구하기 (0) | 2024.11.20 |
C++ std::count string의 문자 갯수 세기 std::count_if (0) | 2024.11.19 |