2012-12-05 50 views
2

將函數應用於元素集合時,std::transform將輸出作爲第3個參數。是否有版本返回結果,如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,因爲它不分配額外的容器。