【发布时间】:2014-10-24 14:04:02
【问题描述】:
我有一个函数 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),所以我想避免从向量复制到另一个字符数组。
【问题讨论】:
-
std::shared_ptr<char>是指向单个字符的指针。它不能拥有char的数组。 -
@japreiss:其实可以,因为
std::shared_ptr的删除器是类型擦除的。如果它是这样构造的std::shared_ptr<char>(new char[65535], std::default_delete<char[]>());,那么它是完全有效的。但我怀疑 OP 是否真的这样做了。 -
@japreiss 更重要的是:是否有任何理由曾经有一个指向
char的指针(智能或其他)? -
@tcb 您从
vector<char>到shared_ptr<char[]>的转换中获得了什么? -
我只拥有
foo,向量是从另一个库传递给我的,我必须将它传递给位于另一个库中的bar。
标签: c++ c++11 vector visual-studio-2013