C++ STL中的vector

来源:互联网 发布:使命召唤8枪械数据 编辑:程序博客网 时间:2024/05/16 18:47

援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vector进行内存分配时,其实际分配的容量要比当前所需的空间多一些。就是说,vector容器预留了一些额外的存储区,用于存放新添加的元素,这样就不必为每个新元素重新分配整个容器的内存空间。

因此,vector的底层实现是数组形式
vector的capacity:获取vector当前能够存储的元素总数。
vector的reserve:vector预留多少个元素的存储空间。

当vector容器不得不分配新的存储空间时,是以加倍容量的方式分配内存空间的。

为了防止vector发生过多的插入拷贝,建议用reserve函数为vector申请足够大的容量

0 0
原创粉丝点击