vector扩容

本文探讨了C++中STL vector的扩容原理,当vector空间不足时,它会申请新空间并拷贝原有内容。由于内存重新分配,这可能导致迭代器失效。不同的编译器如VS和G++有不同的扩容因子,VS采用1.5,G++使用2。文章对比了两种扩容因子的优缺点,指出1.5可能更优,因为它能更好地利用内存并减少频繁分配。
摘要由CSDN通过智能技术生成

扩容原理

  • vector以连续的数组存放数据,当vector空间已满时会申请新的空间并将原容器中的内容拷贝到新空间中,并销毁原容器
  • 存储空间的重新分配会导致迭代器失效
  • 因为分配空间后需要进行拷贝,编译器会预分配更多空间以减少发生拷贝影响程序效率
  • 扩容的大小叫做扩容因子,扩容因子由编译器决定,VS的扩容因子为1.5,G++中,扩容因子为2
	vector<int> v = {
    1,2,3,4,5,6 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值