将函数应用于元素集合时,std::transform
将输出作为第3个参数。是否有返回结果的版本,例如vec2 = map(func, vec1)
?
答案 0 :(得分: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,因为它不会分配额外的容器。