考慮下面的代碼:我應該假設一個對象的析構函數在從STL容器中移除後立即被調用?
class T { ... }; // T has a non-trivial destructor
void foo() {
std::vector<T> v(5);
v.pop_back();
...
}
v.pop_back()
後,請問STL保證T::~T()
已呼籲v.back()
?注意:任何刪除元素的向量的任何方法(例如resize()
,erase()
等)的問題都適用。
我正在爲我的應用程序編寫容器類,我希望它們儘可能地遵守原則由標準庫使用。如果我的集裝箱班不做這個保證,是否有風險?
簡短回答:是的 – AndyG
你是什麼意思的「立即」?你打算根本不打電話給析構函數,還是打算安排稍後調用它(當有人調用'push_back',或者銷燬你的容器時)?無論哪種方式,你的東西不會表現爲一個容器,但它可以離期望的更近或更遠...... –
我想知道你在想什麼其他操作會導致它 – PlasmaHH