STL之vector

vector是表示可以改变大小的array的序列容器。与array一样,vector为其元素使用连续的存储位置,这意味着也可以使用指向其元素的常规指针上的偏移量来访问它们的元素,并且与array中一样高效。但与array不同的是,它们的大小可以动态变化,存储由容器自动处理。在内部,vector使用一个动态分配的数组来存储它们的元素。这个array可能需要重新分配,以便在插入新元素时增加大小,这意味着需要分配一个新数组并将所有元素移动到该数组中。就处理时间而言,这是一项相对昂贵的任务,因此,在每次向容器添加元素时,vector不会重新分配。相反,vector容器可能会分配一些额外的存储空间来适应可能的增长,因此容器的实际容量可能大于包含其元素所严格需要的存储空间(即其大小)。库可以实现增长不同的策略来平衡内存使用和重新分配,但在任何情况下,重新分配应该只发生在对数生长间隔的大小,以便插入单个元素的向量可以提供平摊常数时间复杂度(见push_back方法)。因此,与数组相比,向量消耗更多的内存以换取管理存储和高效动态增长的能力。与其他动态序列容器(deques、lists和forward_lists)相比,vector访问其元素的效率非常高(就像数组一样),从其末尾添加或删除元素的效率也相对较高。对于涉及在末尾位置插入或删除元素的操作,它们的性能比其他操作差,而且迭代器和引用的一致性不如list和forward_lists。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值