我希望以类似于 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());
是否有类似 std:transform 的方法将值插入到 std::vector 中?
最佳答案
您不需要预先调整要用变换填充的 vector 的大小。使用 std::back_inserter
它的作用类似于 vector 的迭代器,但实际上会调用 push_back()
将元素插入 vector 中。
所以你的代码看起来像
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());
关于c++ - 替换 std::transform,插入到 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522742/