1

std::vector::pop_backその中のオブジェクトのポインターを設定しますかnullptr、それとも単にオブジェクトを削除しますか?

ベクトルのサイズが減少しているため、オブジェクトが明らかに削除されていることがわかりますが、ポインターが設定されているかどうかを知りたいですか、それともnullptr手動で行う必要がありますか?

編集:ポインタを含むベクトルに従ってこの質問をしました。例: vector<Bitmap*>.

4

3 に答える 3

4

http://www.cplusplus.com/reference/vector/vector/pop_back/

終了反復子と、削除された要素を参照する反復子、ポインター、および参照は無効になります。削除されていない他の要素を参照する反復子、ポインター、および参照は、呼び出し前に参照していたのと同じ要素を参照し続けることが保証されます。

ベクトルに直接オブジェクトが含まれている場合、オブジェクトのデストラクタが呼び出されます。明らかに、(所有権のある) ポインターのベクトルを使用している場合は、delete を自分で呼び出さなければなりません。

std::vector<P*> myvector;
...
delete myvector.back();
myvector.pop_back();
于 2015-02-26T15:32:42.487 に答える