gpt4 book ai didi

c++ - 将矩阵 `(*sp)[i]` 的行 `shared_ptr> sp` 传递给接受 `shared_ptr>` 的函数

转载 作者:太空狗 更新时间:2023-10-29 20:38:23 25 4
gpt4 key购买 nike

我有一个 std::shared_ptr<std::vector<std::vector<double>> sp并且需要通过 (*sp)[i] , 对于一些 i , 一个函数 foo它接受 std::shared_ptr<std::vector<double>> .我该怎么做?

一个选项是 foo(std::make_shared<std::vector<double>>((*sp)[i]) ,但这会创建 vector 的拷贝 (*sp)[i] .自 (*sp)[i]可能很大,我绝对不希望发生这种情况。

那么,是否有任何选项可以传递 (*sp)[i]foo不复制?

编辑:也许我们可以做以下事情:

foo(std::shared_ptr<std::vector<double>>(&(*sp)[i], [](std::vector<double>* p) { }));

最佳答案

使用别名构造函数。

foo(std::shared_ptr<std::vector<double>>(sp, &(*sp)[i]));

关于c++ - 将矩阵 `(*sp)[i]` 的行 `shared_ptr<vector<vector<T>> sp` 传递给接受 `shared_ptr<vector<T>>` 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31881917/

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