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

tcb*_*tcb 2 c++ vector c++11 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
}
Run Code Online (Sandbox Code Playgroud)

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

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

Mik*_*our 5

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

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