您的位置:首页 > 编程语言 > C语言/C++

C++ STL中的vector

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

因此,vector的底层实现是数组形式

vector的capacity:获取vector当前能够存储的元素总数。

vector的reserve:vector预留多少个元素的存储空间。

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

为了防止vector发生过多的插入拷贝,建议用reserve函数为vector申请足够大的容量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: