我是linux ,在个人电脑中,vector的代码位于/usr/include/c++/4.4.4/bits/stl_vector.h, vector.tcclinux
先归纳细节:c++
vector的实现是算法
它在stl_vector.h 中定义了一个数组
_Vector_impl _M_impl;
_Vector_impl的三个对象分别是数组的起始地址_M_start, 结束地址,还有vector容器的结束地址函数
由于有保留内存的存在。因此往vector里添加数据时,若是还有保留空间。就能够简单地将数据放入vector3d
当你试图去把一个元素插入内存已经满了的vector时,这个vector会分配具备更多 容量的新内存,从旧内存把它的元素拷贝到新内存,销毁旧内存里的元素,回收旧内存。而后它添加插入的元素.code
例如对象
vector 重载了operator[],因此它虽然是一个类,但却能够像原生数组同样的用[]来访问。如data[3]blog
从这里也能够看到,迭代算法中的内存是连续的。内存