3、reserve方法对于vector元素大小没有任何影响,不创建对象。 vector的初始的扩容方式代价太大,初始扩容效率低, 需要频繁增长,不仅操作效率比较低,而且频繁的向操作系统申请内存容易造成过多的内存碎片, 所以这个时候需要合理使用resize()和reserve()方法提高效率减少内存碎片的。 问题一:为什么非要以倍数的形式扩容,而不...
vector申请的是一段连续的内存,当插入新的元素内存不够时,通常会再重新申请更大的一块内存,将原来的元素拷贝过去,释放旧空间。因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为O(n)。 二、相关函数介绍 2.1 resize() resize,即重置容器空间。当设置值小于当前容器空间时,会将...
两个函数的参数形式也有区别的,reserve函数之后一个参数,即需要预留的容器的空间;resize函数可以有两个参数,第一个参数是容器新的大小, 第二个参数是要加入容器中的新元素,如果这个参数被省略,那么就调用元素对象的默认构造函数。下面是这两个函数使用例子: 例子1: vector<int> myVec; myVec.reserve( 100 ); /...