• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-05-02 15:33 Aet 隐藏边栏 |   抢沙发  4 
文章评分 1 次,平均分 5.0

区别

  • array是静态空间,一旦配置了就不能改变。
  • vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。

摘要

迭代器

vector维护的是一个连续线性空间,所以不论其元素型别为何,普通指针都可以作为vector的迭代器而满足所有必要条件

因为vector所需要的操作行为,如operator*,operator->,operator++,operator--,operator+,operator-,operator+=,operator-=,普通指针天生就具备。

vector支持随机存取,而普通指针正是有着这样的能力。

数据结构

vector所采用的数据结构非常简单:线性连续空间【顺序表】

为了降低空间配置时的速度成本,vector实际分配的空间大小可能比客户端需求量更大一些,这个实际分配的空间大小是capacity()的概念

增加新元素时,如果超过当时的容量了,则容量会扩充到两倍,如果两倍还不够用,就扩充到足够大的容量。

关于vector的capacity增长规则,根据我实际的测试结果,以及查阅资料来看,这个视平台而不同。

比如STL源码剖析这本书里,这里写的是以两倍的方式增长,我的测试结果显示是以1.5倍增长(向下取整)。另外,查阅资料发现,有的平台下,别人测试显示又是以两倍的方式增长。

操作

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-27
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享