std::vector 的扩容机制#学习记录#

C++ 标准库中的 std::vector 类型,它是一个动态数组,可以动态增长和缩小,即我们可以动态的输入而不需要预先分配好固定大小。

其扩容步骤为:

  1. 检查容量是否足够: 在插入元素之前,std::vector 会检查当前元素数量是否超过了容量(capacity)。如果超过了容量,就需要进行扩容操作。

  2. 计算新容量: 计算新的容量,通常是当前容量的两倍或某个固定的增长因子。这是为了减少频繁扩容的次数,提高性能。

  3. 分配新内存: 分配新的内存空间,大小为新容量。

  4. 拷贝元素: 将原来的元素拷贝到新的内存空间中。

  5. 释放旧内存: 释放原来的内存空间。

普通数组在传入函数时只是传入了数组的首地址,通过对地址的偏移来实现访问,所以传入普通数组时在函数中无法求得知数组元素个数,即一般还需传入元素个数。而当通过引用传递一个容器类(比如 std::vector)时,你可以使用容器的成员函数,比如 size()来求得数组元素个数,因为引用并不改变原始对象的性质,而是提供了对原始对象的访问。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值