要求你熟悉stl,言下之意就是要你熟悉stl的内部实现。
vector的clear动作并不回收内存,有点像内存泄露但又不是内存泄露,因为下次装入元素不用分配内存,直接使用这些预分配内存,
clear并不改变vector的capacity。vector内的元素如果是对象型会在clear时调用对应的析构,如果是指针型,vector并不负责释放
内存,这个会引起真正的内存泄露。
如果你想回收vector的内存,那么可以用swap技法,比如vector<type> tmp.swap(v) 。这将生成一个空的vector,然后与现有的
vector交换。
时间: 2024-10-18 05:25:02