請問如果我在STL容器存儲的是對象,那么我在調用clear()或eara()的時候,會自動釋放這個對象的內存空間嗎?會執行該對象的析夠函數嗎?
=======================
會,析構函數也會自動調用。
但如果存儲的是對象的指針,外部對象如果是在堆上分配的,需要我們自已delete
=======================
STL的容器是基于by value語意的。當你把一個元素放入容器中,在容器中存放的實際上是這個元素的一個副本(這就是為什么STL容器要求元素必須可以拷貝構造和賦值),副本所占的內存是STL容器自己分配的,所以它會自己回收這些內存,同時調用元素的析構函數。
但是如果你把指針放到容器中,clear的時候容器只負責回收指針本身所占的內存,至于指針所指向的東西,它是不管。