clear 源码:
clear 只是清空了存储空间存放的元素。至于申请出的空间并没有释放。size 是0 但是他的容量capacity 没有变
void clear() { erase(begin(), end()); }
void erase(iterator first, iterator last) {
iterator i = copy(last, finish, first);
destroy(i, finish);
finish = finish - (last - first);
}
template <class T>
inline void destroy(T* pointer) {
pointer->~T();
}
swap 源码:
swap 直接就把申请的空间都释放了,capacity 是 0 size 是0
std::vector<std::shared_ptr>().swap(vec);
void swap(vector<T, Alloc>& x) {
::swap(start, x.start);
::swap(finish, x.finish);
::swap(end_of_storage, x.end_of_storage);
}
template <class T>
inline void swap(T& a, T& b) {
T tmp = a;
a = b;
b = tmp;
}
具体调试结果:
没调用 celar() 和 swap() 的效果:
调用swap()的效果:
调用celar()的效果: