admin管理员组

文章数量:1612065

简介

  • vector容器,顺序存储,需要进行内存的分配,内存容量自动在增长,插入删除麻烦

================================================================================================================================================================

一、vector容器的自增长

  • 在容器对象中insert或压入一个元素时,该对象的大小增加1 。

  • 如果resize容器以扩充其容量,则必须在容器中添加额外的元素。标准库处理存储这些新元素的内存分配问题(最后面的例子)

  • 为了支持快速的随机访问,vector容器的元素以连续的方式存放—-每一个元素都紧挨着前一个元素存储。

  • 已知元素是连续存储的,当我们在容器内添加一个元素时,如果容器中已经没有空间容纳新的元素,此时,由于元素必须连续存储以便索引访问,所以不能在内存中随便找个地方存储这个新元素。于是,vector必须重新分配存储空间,用来存放原来的元素以及新添加的元素:存放在旧存储空间中的元素被复制到新存储空间里, 接着插入新元素,最后撤销旧的存储空间。如果vector容器在每次添加新元素时,都要这么分配和撤销内存空间,其性能将会非常慢,简直无法接受。(vector容器,顺序存储,需要进行内存的分配,插入删除麻烦)

  • 对于不连续存储元素的容器,不存在这样的内存分配问题。例如,在list容器中添加一个元素,标准库只需创建一个新元素,然后将该元素连接在已存在的链表中,不需要重新分配存储空间,也不必复制任何已经存在的元素。(链式存储,插入删除方便,不需要进行内存分配)

  • 一般而言,使用list容器优于vector容器,但是,对于大部分应用,使用vector容器是最好的。原因在于,标准库的实现者使用这样的内存分配策略:以最小的代价连续存储元素。访问元素的便利弥补了其存储的代价。

  • 为了使vector容器实现快速的内存分配,所谓内存分配就是在刚创建一个容器时,对其进行内存分配,其实际分配的容量要比

本文标签: 容器VectorreserveCapacitysize