2012-12-05 5 views
2

요소 컬렉션에 함수를 적용하면 std::transform이 출력을 세 번째 매개 변수로 사용합니다. 결과를 반환하는 버전이 있나요? vec2 = map(func, vec1)과 같은 것입니까?std :: transform의 기능 버전

+0

어떻게 그 함수가 무엇을 반환해야하는지 알 수 있습니까? 가장 가까운 곳은 아마도 'transform_iterator'일 것입니다. http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/transform_iterator.html을 참조하십시오. – filmor

답변

3

아니요, 표준 라이브러리에는 아무 것도 없습니다. 당신은 하나를 직접 작성할 수 있습니다

template<typename T, typename Func> 
std::vector<T> transform(std::vector<T> const &input, Func func) { 
    std::vector<T> result(input.size()); 
    std::transform(input.begin(), input.end(), result.begin(), func); 
    return result; 
} 

더 나은 솔루션이 추가 컨테이너를 할당하지 않는 transformed adaptor from Boost.Range을 사용할 수 있습니다.

관련 문제