C++ STL-Vector基本原理
来源:互联网 发布:淘宝网农村怎么加盟 编辑:程序博客网 时间:2024/06/11 14:33
vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因为害怕空间不足而一开始要求一个大块头的array了,我们可以安心使用array,吃多少用多少。
vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率。一旦vector的旧有空间满载,如果客户端每新增一个元素,vector的内部只是扩充一个元素的空间,实为不智。因为所谓扩充空间(不论多大),一如稍早所说,是” 配置新空间/数据移动/释还旧空间 “的大工程,时间成本很高,应该加入某种未雨绸缪的考虑。
另外,由于 vector维护的是一个连续线性空间,所以vector支持随机存取 。
注意:vector动态增加大小时,并不是在原空间之后持续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然后将原内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间。因此, 对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了 。这是程序员易犯的一个错误,务需小心。
转自:http://blog.csdn.net/baidu_28312631/article/details/47335847
- C++ STL-Vector基本原理
- C++stl vector 用法
- c++STL之vector
- C++STL之vector
- C++STL之vector
- C++:STL vector讲解
- C++STL--vector
- C++STL之vector
- 【C++】 STL vector list deque
- 【C++】 STL vector list deque
- [C++][stl]vector、list、deque
- 【C++】 STL vector list deque
- c plus STL and vector
- C++stl学习文档 vector
- C++STL (vector,list,map)
- C++:STL:vector删除元素
- C++:STL模板类vector
- 【STL C++】简单实现vector
- YUV4:2:0格式的帧信息
- jsp页面查询附件并下载
- C语言创建单向链表之逆向建链
- bzoj 2730
- 顺序表、链表封装结构
- C++ STL-Vector基本原理
- bzoj 1180 OTOCI LCT 解题报告
- 关于input file按钮的美化
- 二分查找中的最大值的最小值问题
- GalaxyOJ-768 (重建图+SPFA)
- cygwin安装openssh服务
- display: inline-block
- POJ 1232 Ubiquitous Religions
- python文件压缩