替换std :: transform,插入到std :: vector中

use*_*451 0 c++ stl stl-algorithm c++11

我想以类似std :: transform的方式将值插入到std :: vector中。std :: transform需要预先设置大小的第三个参数,但是在我的情况下,大小取决于transformers(),并且不可预测。

...
// std::vector<int> new_args(); <-- not working
std::vector<int> new_args(args.size());
std::transform(args.begin(),args.end(),new_args.begin(),transformers());
Run Code Online (Sandbox Code Playgroud)

是否有一种std:transform-ish方式将值插入到std :: vector中?

Nat*_*ica 5

您无需预先确定将要用变换填充的向量的大小。使用std::back_inserterIt将像向量的迭代器一样工作,但实际上将调用push_back()将元素插入向量中。

所以你的代码看起来像

std::vector<int> new_args;
new_args.reserve(args.size); // use this so you don't have grow the vector geometrically.
std::transform(args.begin(),args.end(),std::back_inserter(new_args),transformers());
Run Code Online (Sandbox Code Playgroud)