動的配列A **を必要とする従来の関数があります。たとえば、ポインタのポインタの自動メモリ管理
A** array = new A*[100];
foo(array, 100);
...
void foo(A** a, int len) {
for(int i=0;i<len; ++i) {
a[i] = A::create(...);
}
}
私はこの配列を管理するために "スマートな"ポインタを使用できるかどうか疑問に思っていました。
boost :: scoped_array配列を使用できます。 array.get()はA **を返します。したがって、従来の関数でも動作します。しかし、私は配列のデストラクタは、トップレベルポインタを解放するだけで、第2レベルは解放しないと思います。
ptr_vectorは自動的にすべてを削除します。しかし、A **を返す方法はありません。
他の解決策はありますか?
あなたが話すこのようなレガシー機能の例は、この質問を簡単に答えることができます。 – Dmitry
ダブルポインタで処理される動的な2次元配列を実装するには、いくつかの方法があります。異なるものは異なる取り扱いを必要とする。 –
@AviBerger 2d配列を作成するために使用できるブーストまたはSTLコンテナはありますか? –