STL中vector的介绍

vector介绍

vector

vector是一个可变大小数组的序列容器,是一个类似于数组的顺序存储结构容器,因此可以采用下表对vector的元素进行访问,可以进行随机存储,而且其大小是可变的

vector的使用

构造函数说明
vector()无参构造
vector(size_type n, const value_type& val = value_type())构造并初始化n个val
vector(const vector& x)拷贝构造
vector(InputIterator first, InputIterator last)迭代器构造,传入首尾迭代器
iterator说明
begin(),end()获取第一个元素位置的迭代器、最后一个元素下一个位置的迭代器
rbegin(),rend()获取最后一个元素位置的迭代器、获取第一个元素前一个位置的迭代器
容量操作函数说明
size获取数据个数
capacity获取容量大小
empty判空
resize改变size
reserve改变capacity
  1. capacity的扩充在不同的版本下实现的倍数是不同的,例如vs下是按照1.5倍扩充的,g++是按照2倍扩充的
  2. resize在改变size同时会对其进行初始化
  3. reserve只改变capacity,不会进行初始化,因此size不会改变
增删查改说明
push_back()尾插
pop_back()尾删
find查找,由algorithm模块实现
insert在pos之后插入val
erase删除pos的数据
swap交换两个vector
operator[]支持下标访问

vector迭代器失效

迭代器的概念可以简单理解为指针,例如vector的迭代器其实就是原生指针,像其他更为复杂的容器其迭代器是对指针的封装

迭代器的销毁实际上类似于野指针的概念,意为其指向的空间已经销毁,若继续使用则程序可能会崩溃

可能造成迭代器失效的操作有:

  1. 空间的改变,例如resize、reserve、insert、assign、push_back

    因为这些类似于插入操作对于空间都有可能造成扩容,一旦在操作之前声明了迭代器,操作之后迭代器就有可能失效

    可以通过在操作之后重新进行赋值解决

  2. 删除操作 erase

    在一个元素删除之后,之前对该元素的迭代器很有可能失效,会导致非法访问

注意:在不同的编译器下,迭代器失效可能不会进行报错,所以需要格外注意

感谢支持,如果你发现文章中有任何不严谨或者需要补充的部分,欢迎在评论区指出

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

栖林_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值