STL之vector

我是linux ,在个人电脑中,vector的代码位于/usr/include/c++/4.4.4/bits/stl_vector.h, vector.tcclinux

先归纳细节:c++

  1. vector还是基本数组,也就是一个连续的内存块。
  2. 经过复制构造,opernator=函数来实现深复制,经过析构函数回收基本数组。
  3. 能够用resize来改变大小
  4. 提供operator[]来访问和修改内容

vector的实现是算法

它在stl_vector.h 中定义了一个数组

 

  _Vector_impl _M_impl;

 

 

 _Vector_impl的三个对象分别是数组的起始地址_M_start,  结束地址,还有vector容器的结束地址函数

 

 

 

 

由于有保留内存的存在。因此往vector里添加数据时,若是还有保留空间。就能够简单地将数据放入vector3d

 

 

当你试图去把一个元素插入内存已经满了的vector时,这个vector会分配具备更多 容量的新内存,从旧内存把它的元素拷贝到新内存,销毁旧内存里的元素,回收旧内存。而后它添加插入的元素.code

例如对象

 

vector 重载了operator[],因此它虽然是一个类,但却能够像原生数组同样的用[]来访问。如data[3]blog

 

 

从这里也能够看到,迭代算法中的内存是连续的。内存

相关文章
相关标签/搜索