STL源码剖析之Vector容器【2013.11.15】

来源:互联网 发布:linux启动服务的命令 编辑:程序博客网 时间:2024/06/05 21:54

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 【IT】C/C++/STL/Linux/W


STL源码剖析之Vector容器【2013.11.15】


容器在STL中是和使用者联系最多的。

Vector容器,没什么很多需要注意的。

STL中vector的结构主要成员如下:

start为头部迭代器,作为随机访问的基数。[n] = start + n 

finish为数据尾部迭代器,有效元素的尾部,用来计算,size = finish - start

end_of_storage为容器尾部迭代器,可以计算容器最大容量,capacity = end_of_storage - start


【1】Vector是可变长的序列容器,在内存中占用连续内存。

【2】Vector在增加的元素的时候,会根据容器容量是否足够来重新申请更大的内存块来支持数据量。容量不等于Vector的size。容量 >= size 当容量等于size的是,再插入元素,Vector就会重新申请一块内存,容量大约为容器size的两倍。size以外的空间用作备用空间,用以节省插入时效。

【3】Vector在插入或者删除等,对容器数据分布有改动的时候,将会使迭代器失效。如插入的时候,会使插入点以后的迭代器失效,删除也是一样。

【4】因为Vector是需要保持连续性的容器,所以,在对Vector进行插入和删除的时候,需要对应的移动插入点(删除点)后的所有元素,所以在效率上面是比较大的消耗。

........................


欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 【IT】C/C++/STL/Linux/W


原创粉丝点击