将所有权从std :: vector转移到std :: shared_ptr

时间:2014-10-24 14:04:03

标签: c++ c++11 vector visual-studio-2013

我有一个函数foo,它以std::vector<char>作为参数,并调用另一个以bar为参数的函数std::shared_ptr<char>

void foo(std::vector<char> arg)
{
    bar(?) // what do i pass to bar here?
}

void bar(std::shared_ptr<char> arg)
{
    // do something asynchronously
}

如何将向量的基础数组的所有权转移到shared_ptr?

向量很大(4MB),所以我想避免从向量复制到另一个char数组。

1 个答案:

答案 0 :(得分:5)

你做不到。除了将矢量移动到另一个矢量之外,没有办法释放矢量对其内存的所有权。

如果您可以修改bar以取std::vector<char>,那么您可以通过移动向量来转移所有权,而无需复制它。