環境
自分のバージョンのstd::vector
テンプレート クラスを実装しようとしています。ベクトルには、テンプレート引数の動的配列が含まれますT
。
_vec = new T[n];
明らかにT
、ポインター、クラス、プリミティブ型など、あらゆる型にすることができます。v.resize(4)
サイズのベクトルを1 回呼び出すと、次の仕様6
に従って動的配列の最後の 2 つの要素を (配列を再割り当てせずに) 削除する必要があります。
n が現在のコンテナー サイズより小さい場合、コンテンツは最初の n 要素に縮小され、それ以降の要素は削除されます (そして破棄されます)。
破壊するということは、オブジェクトのデストラクタを呼び出すか、ポインタを含む他のプリミティブ型の場合は単にメモリ空間の割り当てを解除することを意味すると思います。
質問:動的に割り当てられた配列内のテンプレート要素を、割り当てを解除および再割り当てせずに破棄することは可能ですか?
私は何を試しましたか?さて、私は心からどこから始めればよいかわかりません:
- どうやら、プリミティブ型でa を呼び出すべきではありません。
delete
- オブジェクトでデストラクタを明示的に呼び出すことができますが
T
、オブジェクトでない場合は機能しません。 _size
内部カウンターを減らすことだけを考えました(push_back
要素が上書きされるように) が、オブジェクトのデストラクタがすぐに呼び出されるわけではありません。