transform 함수는 이터레이터를 활용해서 접근할 수 있는 원소들의 값을 변경시켜 줄 수 있다.
1. 사용 방법
transform (Iter begin, Iter end, Iter begin_result, Pred pred);
// 1번 인자는 변환을 시작할 컨테이너의 시작 iterator,
// 2번 인자는 변환을 끝낼 컨테이너의 끝 iterator,
// 3번 인자는 모든 값 변환을 마친 컨테이너의 결과값을 저장할 시작 iterator,
// 4번 인자는 컨테이너 값을 어떻게 변환할 것인가하는 함수 객체 혹은 함수 포인터
당연한 이야기이지만, 변경된 값들을 저장할 이터레이터는 원래 값이 저장된 이터레이터의 크기만큼이 할당되어 있어야 한다.
2. 사용 예시
std::vector<int> vec;
std::vector<int> result;
vec.push_back(1);
vec.push_back(3);
vec.push_back(2);
vec.push_back(4);
vec.push_back(7);
vec.push_back(2);
result.resize(vec.size());
std::transform(vec.begin(), vec.end(), result.begin(),
[](int i) { return i + 1; })
// vec에는 현재 1, 3, 2, 4, 7, 2
// result에는 현재 2, 4, 3, 5, 8, 3
마지막 인자에 전달한 함수 객체의 반환 값으로 모든 값을 변경시켜 줄 수 있다.
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 문법 / 예외 (0) | 2023.02.15 |
---|---|
STL 알고리즘 / find, find_if, any_of, all_of (0) | 2023.02.14 |
STL 알고리즘 - 원소 제거(remove, remove_if) (0) | 2023.02.14 |
STL 알고리즘 - 정렬(sort, stable_sort, partial_sort) (0) | 2023.02.14 |
STL 컨테이너 - set, multiset, map, multimap (0) | 2023.02.14 |
댓글