【发布时间】:2020-06-20 15:44:24
【问题描述】:
有一个std::unique_ptr<A>的向量。我需要将该数据传递给需要A 向量的函数。
我尝试使用std::transform,像这样:
std::vector<std::unique_ptr<A>> a;
std::vector<A> aDirect;
std::transform(a.begin(), a.end(),
std::back_inserter(aDirect),
[](std::unique_ptr<A> element)-> A { return *element; });
但似乎std::transform 在某些时候尝试复制a 的元素,所以这不起作用,因为尝试引用已删除的函数而失败。
当然,我可以使用 for 循环手动执行此操作,但我想知道是否有更优雅的方式来执行此操作。
【问题讨论】:
-
在调用
std::tranform之前尝试aDirect.reserve(a.size());。
标签: c++ vector std unique-ptr