我有一个名为 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
}
我怎样将vector的底层数组转让给shared_ptr?
由于vector很大(4MB),因此我希望避免从向量中复制到另一个char数组。
std::shared_ptr<char>
是指向单个字符的指针。它不能拥有字符数组。 - japreissstd::shared_ptr
的删除器是类型擦除的。如果像这样构造它:std::shared_ptr<char>(new char[65535], std::default_delete<char[]>());
,那么它就是完全有效的。但我怀疑楼主实际上并没有这样做。 - Siyuan Renchar
的指针(智能或其他)? - James Kanzevector<char>
转换为shared_ptr<char[]>
,您获得了什么? - Pradhanfoo
,这个向量是从另一个库传递给我的,而我必须将其传递给另一个库中的bar
。 - tcb