您的位置:首页 > 编程语言 > C语言/C++

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

2013-11-18 09:44 211 查看
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c
/ vc / c++ 编程经验,就来吧!158427611 


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

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

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

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



start为头部迭代器,作为随机访问的基数。
= 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 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ stl 内存 源码 sgi