作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个没有push_back()
方法的容器。但是这个容器在 begin()
和 end()
上有一个迭代器。
我想使用 std::transform()
输出到那个容器。但是 std::back_inserter
需要在输出容器上调用 push_back()
。
是否可以使用std::transform()
输出到只支持直接赋值的容器中?喜欢:
for (auto item : containerNoPushBack)
{
item = calculateValue();
}
或者像这样的索引赋值:
for (size_t i = 0; i < containerNoPushBack.size(); ++i)
{
item[i] = calculateValue();
}
最佳答案
如果您可以执行 item[i]
(即您的容器中有足够的元素),那么您只需在 中使用
,不需要 your_container.begin()
std::transformstd::back_inserter
。 std::back_inserter
是避免在应用之前显式调整容器大小的好方法。
以下代码段都将用 my_input
的内容填充 my_output
:
std::vector<int> my_output;
std::transform(my_input.begin(), my_input.end(), std::back_inserter(my_output), [](const auto& arg){return arg;});
std::vector<int> my_output;
my_output.resize(my_input.size());
std::transform(my_input.begin(), my_input.end(), my_output.begin(), [](const auto& arg){return arg;});
关于c++ - 如何在没有 push_back 的情况下将 std::transform 与容器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56444704/
我是一名优秀的程序员,十分优秀!