💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 18、STL中的vector的实现,是怎么扩容的? vector使用的注意点及其原因,频繁对vector调用push\_back()对性能的影响和原因。  vector就是一个**动态增长**的数组,里面有一个指针指向一片连续的空间,当空间装不下的时候,会申请一片更大的空间,将原来的数据拷贝过去,并释放原来的旧空间。当删除的时候空间并不会被释放,只是清空了里面的数据。对比array是静态空间一旦配置了就不能改变大小。 vector的动态增加大小的时候,并不是在原有的空间上持续新的空间(无法保证原空间的后面还有可供配置的空间),而是**以原大小的两倍另外配置一块较大的空间,然后将原内容拷贝过来,并释放原空间**。在VS下是1.5倍扩容,在GCC下是2倍扩容。 在原来空间不够存储新值时,每次调用push\_back方法都会重新分配新的空间以满足新数据的添加操作。如果在程序中频繁进行这种操作,还是比较消耗性能的。