0xb*_*00d 3 c++ smart-pointers c++11
对于某些人,我有一个std::shared_ptr<std::vector<std::vector<double>> sp并且需要传递给接受a 的函数.我怎样才能做到这一点?(*sp)[i]ifoostd::shared_ptr<std::vector<double>>
一种选择是foo(std::make_shared<std::vector<double>>((*sp)[i]),但这将创建向量的副本(*sp)[i].既然(*sp)[i]可能很大,我绝对不希望这种情况发生.
那么,有没有选项可以传递(*sp)[i]给我foo而不复制?
编辑:也许我们可以做以下事情:
foo(std::shared_ptr<std::vector<double>>(&(*sp)[i], [](std::vector<double>* p) { }));
Run Code Online (Sandbox Code Playgroud)
使用别名构造函数.
foo(std::shared_ptr<std::vector<double>>(sp, &(*sp)[i]));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |