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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步