0

私は shared_array を持っています: boost::shared_array myarr(new char[m_length]);

配列を再割り当てしたいと思います。必要なサイズで新しい shared_array を作成し、スワップ ブースト メソッドを使用することを考えましたが、これは参照カウントもコピーします。別のアイデアはありますか?

//new_length>m_length
void func(boost::shared_array<char> &myarr,int new_length)
{
       boost::shared_array<char> new_arr(new char[new_length]);
       myarr.swap(new_arr);
}
4

2 に答える 2

2

代わりに?を使用しないのはなぜboost::shared_ptr<std::vector<char> >ですか?標準ライブラリにサイズ変更を処理させます。

(実際、そもそもshared_arrayを使用していた理由によっては、std :: vectorを使用し、参照によって慎重に渡すだけでうまくいく可能性があります。)

于 2010-12-06T18:47:20.637 に答える
1

boost::shared_array::reset はトリックを行う必要があります

myarr.reset(new char[new_length]);

boost::shared_array::reset は、割り当てられた古い配列を削除し、新しく割り当てられた配列と交換します。

編集:この答えを無視してください、それは彼の問題を解決しません

于 2010-12-06T18:42:16.180 に答える