c++ - 替换 std::transform,插入到 std::vector

标签 c++ c++11 stl stl-algorithm

我希望以类似于 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/

相关文章:

c++ - 用于在 OpenGL 缓冲区对象中存储 STL vector 的自定义分配器

c++ - 另一种复制算法

java - 运算符重载 STL 的性能损失是什么

c++ - Cryptopp.dll访问冲突读取位置0x74736554

c++ - 将 unique_ptr 的 vector 传递给对象。 vector 成为成员变量。正确的做法?

c++ - 属性说明符序列是否继承?

c++ - 如何知道 vector 的正确最大大小?最大大小()?但不是

c++ - 从字符串转换为double和int-C++

c++ - c++中的加法ASCII

c++ - 通用引用参数使用了两次