본문 바로가기
프로그래밍 언어/C++

STL 알고리즘 / transform 함수

by Nighthom 2023. 2. 14.

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

마지막 인자에 전달한 함수 객체의 반환 값으로 모든 값을 변경시켜 줄 수 있다. 

댓글