2
將函數應用於元素集合時,std::transform
將輸出作爲第3個參數。是否有版本返回結果,如vec2 = map(func, vec1)
?std :: transform的功能版本
將函數應用於元素集合時,std::transform
將輸出作爲第3個參數。是否有版本返回結果,如vec2 = map(func, vec1)
?std :: transform的功能版本
不,在標準庫中沒有這樣的東西。你可以自己寫一個:
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,因爲它不分配額外的容器。
該函數將如何知道要返回什麼?最接近你可能是'transform_iterator',參見http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/transform_iterator.html – filmor