请问如果我在STL容器存储的是对象,那么我在调用clear()或eara()的时候,会自动释放这个对象的内存空间吗?会执行该对象的析够函数吗?
=======================
会,析构函数也会自动调用。
但如果存储的是对象的指针,外部对象如果是在堆上分配的,需要我们自已delete
=======================
STL的容器是基于by value语意的。当你把一个元素放入容器中,在容器中存放的实际上是这个元素的一个副本(这就是为什么STL容器要求元素必须可以拷贝构造和赋值),副本所占的内存是STL容器自己分配的,所以它会自己回收这些内存,同时调用元素的析构函数。
但是如果你把指针放到容器中,clear的时候容器只负责回收指针本身所占的内存,至于指针所指向的东西,它是不管。