2

将函数应用于元素集合时,std::transform将输出作为第三个参数。是否有返回结果的版本,例如vec2 = map(func, vec1)

4

1 回答 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 回答