gpt4 book ai didi

c++ - 如何在没有 push_back 的情况下将 std::transform 与容器一起使用?

转载 作者:行者123 更新时间:2023-11-30 00:43:08 28 4
gpt4 key购买 nike

我有一个没有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::transform,不需要 std::back_inserterstd::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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com