assign メソッドは、何かを割り当てる前にベクター ターゲット インデックスをクリアすることを読みました。
vector<foo*> somevector;
その場合、assign メソッドは、データをターゲット インデックスにコピーする前に実際に foo* を削除します。
その場合、assign メソッドは、データをターゲット インデックスにコピーする前に実際に foo* を削除します。
いいえ、ポインタ自体は削除されますが、ポインタが指しているオブジェクトは削除されません。
STL コンテナで raw ポインタを使用する場合は注意が必要です。で要素を動的に割り当てるとsomevector
、メモリ リークが発生します。
より実践的な方法は、STL コンテナーでスマート ポインターを使用することです。動的に割り当てられたメモリは、以下の場合に割り当て解除されます。
std::vector<std::unique_ptr<foo>> somevector;
いいえ std::vector
、保存されたポインターで削除を呼び出すことはありません。オブジェクトを破壊するだけです。自明でないデストラクタを持つクラス オブジェクトの場合、破棄はそのデストラクタを呼び出すことで構成されます。ポインター、またはその他の自明に破壊可能なオブジェクトの場合、破壊は何もしないことから成ります。
いいえ、オブジェクトへのポインターを含む標準コンテナーは、ポインターで削除を呼び出すことはありません。必要に応じてこれを行う責任があります。これが、ポインタを保存することが悪い考えである理由です。