[问题] shared_ptr 指向 vector

楼主: shihyu (shihyu)   2017-10-02 03:55:24
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
g++
https://gist.github.com/anonymous/cae972cc0cb32f1055a145b27bfd11b7
我new 出一个二维vector 让 shared_ptr 指标接住
shared_ptr<std::vector<std::vector<double> > > p2 = NULL;
p2 = shared_ptr<std::vector<std::vector<double> > >(new
std::vector<std::vector<double> >(M, std::vector<double>(N, K)));
那我想传递某一列Row 到另外一个函数做处里
void arraycopy(std::shared_ptr<std::vector<double> > row)
{
}
我测试下面用法都不可以!
//arraycopy((*p2)[0]);
//arraycopy((p2)[0]);
//arraycopy((p2)->at(0));
想请问一下要怎么改写才符合我需求?
我需求是
1. 宣告出一个二维的vector 包在 shared_ptr 里面
2. 有个 arraycopy函数将上面的包在shared_ptr 二维 vector 传入
某一列到arraycopy函数做处理...但是必须是传address 进来改在同一块内存
不是deep copy...
谢谢
作者: PkmX (阿猫)   2017-10-02 04:48:00
我觉得你有XY problem 应该先问你想做什么?arrarcopy改成收std::vector<double>&就好了吧vector<vector<double>>里面的vector<double>的生命周期是由外层的vector管理的
楼主: shihyu (shihyu)   2017-10-02 05:27:00
OK了...感谢
作者: LPH66 (-6.2598534e+18f)   2017-10-02 07:52:00
那个, 一楼提的你还是仔细想一下所谓 XY Problem 是指说你想做 X, 你用了解法 Y 但有问题所以你跑上来问 Y, 但事实上你应该要回头检查为何选择 Y是不是在一个更高层次上为了解决 X 你该用其他东西这一点其实我之前回你的文时就有暗示过了...以你后来编辑的东西来看, 那个 arraycopy 感觉满微妙的一般会改动 vector 阵列内容的函式常传参考而不是再外挂一个 new/delete/shard_ptr/等等 做资源管理主要就是因为先前我有提过 vector 本身就是动态配置了再在这上面包另外一个动态配置有叠床架屋的感觉
作者: ah7675 (阿毛)   2017-10-02 23:26:00
搞不好原po会回你“我就是想动态配置啊”

Links booklink

Contact Us: admin [ a t ] ucptt.com