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中?
您无需预先确定将要用变换填充的向量的大小。使用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)
| 归档时间: |
|
| 查看次数: |
3779 次 |
| 最近记录: |