详解STL---vector

本文详细介绍了C++ STL中的vector容器,包括vector的介绍、使用方法、空间增长策略、迭代器失效问题及其解决办法。内容涵盖vector的定义、迭代器使用、capacity与resize的区别以及中间插入和删除元素的影响。特别提到了不同编译器下vector的容量增长策略,如VS的1.5倍增长和g++的2倍增长。同时,讨论了在执行如insert、erase等操作时导致迭代器失效的情况,并给出了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.vector的介绍及应用

1.1vector的介绍

1.2vector的使用

1.2.1 vector的定义

1.2.2 vector iterator 的使用

​ 1.2.3 vector 空间增长问题

1.2.4 vector 的增删查改

1.3 迭代器失效的问题

1.3.1  迭代器失效的原因

1.3.2 指定位置元素的删除操作  -erase

1.3.3 如何解决迭代器失效


1.vector的介绍及应用

1.1vector的介绍

  1. vector是表示可变大小数组的序列容器
  2. vector本质上是一个可变大小的数组,也就是说可以通过下标对vector进行访问,比起数组更加高效的是,它的空间是可以变的,而且它的大小会被容器自动处理。
  3. vector分配空间的策略:vector会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存储空间更大,不同的库采用不同的策略权衡空间的使用和重新分配。但是无论如何,重新分配的应该是对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。
  4. 与其他动态序列相比(deque,list,forward_list),vector在访问元素的时候更加高效,在末尾插入和删除元素相对高效,但是在中间的插入和删除操作,效率更低。

1.2vector的使用

1.2.1 vector的定义

constructor构造函数声明 接口说明
vector() 无参构造
vector(size_type n,const value_type& val=value_type()) 构造并初始化
vector(const vector& x) 拷贝构造

vector(InputIterator first,InputIterator last)

使用迭代器构造

 

1.2.2 vector iterator 的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

年轻人江老Der

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值