boost::shared_array
テンプレートがあります。
ただし、これは固定サイズのデータ配列を共有するため、サイズを変更することはできません。
サイズ変更可能なベクトルを共有する場合は、
boost::shared_ptr< vector< int > >
swap
また、別のベクトルへのベクトルメモリも実行できます。
{
std::vector< int > o1; // on the stack
// fill o1
std::vector< int > * o2 = new std::vector< int >; // on the heap
o2->swap( o1 );
// save o2 somewhere or return it
} // o2 now owns the exact memory that o1 had as o1 loses scope
C++11
「移動」セマンティクスを導入して、実際のメモリをo1に保持できるようにしますstd::move
。
std::vector<int> && foo()
{
std::vector<int> o1;
// fill o1
return std::move( o1 );
}
// from somewhere else
std::vector< int > o2( foo() );