网站公司 转型,网站轮播图片制作,龙华龙岗网站建设公司,网站做可信认证1. 当vector的内存用完了#xff0c;它是如何动态扩展内存的#xff1f;它是怎么释放内存的#xff1f;用clear可以释放掉内存吗#xff1f;是不是线程安全的#xff1f; vector内存用完了#xff0c;会以当前size大小重新申请2* size的内存#xff0c;然后把原来的元素…1. 当vector的内存用完了它是如何动态扩展内存的它是怎么释放内存的用clear可以释放掉内存吗是不是线程安全的 vector内存用完了会以当前size大小重新申请2* size的内存然后把原来的元素复制过去把新元素插上然后释放原来的内存。引用《effective stl》的第十二条当涉及 STL容器和线程安全性时你可以指望一个 STL库允许多个线程同时读一个容器以及多个线程对不同的容器做写入操作。你不能指望 STL库会把你从手工同步控制中解脱出来而且你不能依赖于任何线程支持。必须自己去写多线程安全措施。一般我们释放vector里的元素使用clear其实它不能释放内存要想释放内存要使用swap这样 vectortype v;
//.... 这里添加许多元素给v
//.... 这里删除v中的许多元素
vectortype(v).swap(v);
//此时v的容量已经尽可能的符合其当前包含的元素数量