Vector扩容

Vector扩容在Linux平台下面GCC编译器扩容的大小是2倍,在VS下扩容大小是1.5倍;
选择2倍的扩容大小也是因为扩大2的时候,vector的操作可以接近到常数级别的O(1),因为空间变得很大了,基数大了相对的时间复杂度就小了。

但是扩容2倍这样的话,后面申请的空间是一定会大于之前申请的全部空间,所以之前扩容的空间不能使用,这样对内存并不友好。因此选定的倍数应该是1到2中间,选择1.5的原因应该是:不至于太浪费内存空间,同时也不需要太多次的赋值数组内容,多次扩容之后,也可以重复使用之前的空间。

vector的内存空间只增不减,vector内存的回收只能靠vector调用析构函数的时候才被系统收回,当然也可以使用swap来帮你释放内存,具体方法: vec.swap(vec);

posted @   陈浩辉  阅读(179)  评论(0编辑  收藏  举报
ヾ(≧O≦)〃嗷~
点击右上角即可分享
微信分享提示