Vector

Vector容器:

Vector相比于 array 空间的运用更灵活, array是静态空间,一旦配置了就不能再改变。 而vector 是动态空间会随着数据量的增加

自动扩容(扩容机制 (重新开辟内存, 复制, 为什么二倍扩容))

首先 自动扩容为什么是成倍的 而不是一次性增加多少数值这样子。

(原因:因为成倍扩容它的复杂度平均下来是 常数级, 而一次性增加多少数值是O(n))

为什么是2倍

原因: (首先不一定是2倍 也有可能是1.5倍)考虑可能产生的堆空间浪费,成倍增长倍数不能太大,使用较为广泛的扩容方式有两种,以2二倍的方式扩容,或者以1.5倍的方式扩容。

以2倍的方式扩容,导致下一次申请的内存必然大于之前分配内存的总和,导致之前分配的内存不能再被使用(这句话表述是不是有点问题),所以最好倍增长因子设置为(1,2)之间: 

Vector 底层实现:

vector,底层是一块具有连续内存的数组,vector的核心在于其长度自动可变。vector的数据结构主要由三个迭代器(指针)来完成:指向首元素的start,指向尾元素的finish和指向内存末端的end_of_storage。vector的扩容机制是:当目前可用的空间不足时,分配目前空间的两倍或者目前空间加上所需的新空间大小(取较大值),容量的扩张必须经过“重新配置、元素移动、释放原空间”等过程。

Vector 查找 插入 删除的时间复杂度

vector,vector支持随机访问(通过下标),时间

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值