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申请足够大的容量
因此,vector的底层实现是数组形式。
vector的capacity:获取vector当前能够存储的元素总数。
vector的reserve:vector预留多少个元素的存储空间。
当vector容器不得不分配新的存储空间时,是以加倍容量的方式分配内存空间的。
为了防止vector发生过多的插入拷贝,建议用reserve函数为vector申请足够大的容量
相关文章推荐
- C++ this指针详解
- 一张图看懂MingW GCC 5.2.0中的C++的的拷贝构造函数
- C#调用C++ dll的两种方法
- 声明和定义
- C语言 判断花括号是否成对出现
- c语言之栈存储区和堆区理解
- C++中const用法总结
- 004--C++11的初始化方式
- C++代码优化方法总结
- 字母大小写转化
- C语言 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
- 学籍管理系统 c++作业
- C语言整理-8
- C语言整理-7
- C++中几种将整数转换成二进制输出的方法
- C语言整理-6
- c++指针总结(易混淆)
- c++运算符优先级总结
- C++的头文件和实现文件分别写什么
- C语言整理-5