std::vector概述

        vector可以理解为动态数组,其特点和基本操作方式与array相似,但vector可以动态调整大小。

        vector中的元素是连续存储的,这意味着我们不仅可以通过迭代器std::vector<T>::iterator,还可以像array一样使用下标来访问任意位置的元素。

vector支持的基本操作:点击打开链接

vector的元素存储机制

        我们可以考虑一下,vector中的元素是连续存储的,且vector的大小是可变的,那么如果向vector中添加元素会发生什么:如果没有空间容纳新元素,容器不可能简单地将它添加到内存中其他位置——因为元素必须连续存储。容器必须分配新的内存空间来保存已有元素和新元素,将已有元素从旧位置移到新空间中,然后添加新元素,释放旧存储空间。如果我们每添加一个新元素,vector就执行一次这样的内存分配和释放操作,就会严重影响性能。
        事实上,vector对象采用自动预分配存储空间的方式来减少存储空间重新分配的次数以提高性能。因此存储相同元素的vector往往比array要占用更多空间,因为vector预分配更多的内存来处理未来的容量增长。这种分配策略显然比每次添加新元素时都重新分配容器内存空间的策略要高效得多。虽然vector在每次重新分配内存空间时都要移动所有元素到新位置,但使用此策略后,其扩张操作通常比list和deque还要快。

        同时,vector还为我们提供了一些成员函数来有限地参与vector的内存分配活动:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值