通过从原始指针复制一大堆数据来初始化std :: shared_ptr

时间:2015-07-14 15:54:24

标签: c++ windows c++11 stl smart-pointers

基本上我希望能够实现的目标:

int pBuf = {1, 2, 3, 4, 5, 6};
std::shared_ptr<int> pPtr(pBuf, _ARRAYSIZE(pBuf));

以下语法无效,甚至可能吗? 我需要使用shared_ptr。

1 个答案:

答案 0 :(得分:1)

如果您要创建数组pBuf的副本并将其分配给std::shared_ptr,则以下代码应该有效:

int pBuf[] = {1, 2, 3, 4, 5, 6};
std::shared_ptr<int> pPtr( new int[_ARRAYSIZE(pBuf)], std::default_delete<int[]>() );
std::copy( pBuf, pBuf + _ARRAYSIZE(pBuf), pPtr.get() );