Kar*_*120 2 c++ vector std unique-ptr
有一个向量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; });
Run Code Online (Sandbox Code Playgroud)
但似乎在某个时候std::transform试图复制 的元素a,所以这不起作用,它在尝试引用已删除的函数时失败。
当然,我可以用 for 循环手动完成,但我想知道是否有更优雅的方法来做到这一点。
更改 lambda 以采用 const &
[](std::unique_ptr<A> const &element)-> A { return *element; });
Run Code Online (Sandbox Code Playgroud)
避免因调整大小而产生的副本在转换前保留正确的大小。
std::vector<A> aDirect;
aDirect.reserve(a.size());
std::transform(a.begin(), a.end(),
std::back_inserter(aDirect),
[](std::unique_ptr<A> element) {
return *element;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |