将函数应用于元素集合时,std::transform
将输出作为第三个参数。是否有返回结果的版本,例如vec2 = map(func, vec1)
?
问问题
127 次
1 回答
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
来自 Boost.Range 的适配器,因为它不分配额外的容器。
于 2012-12-05T11:24:19.973 回答