c++ stl源码剖析学习笔记(三)容器 vector
stl中容器有很多种 最简单的应该算是vector 一个空间连续的数组
他的构造函数有多个
以其中
template<typename T>
vector(size_type n,const T& value)为例
vector(size_type n,const T& value) -> fill_initialize(n,value) -> allocate_and_fill(n,value)
既然是 allocate and fill
那么就会调用分配器进行分配内存 allocate
调用uninitialized_fill_n在分配的地址上进行初始化
而uninitialized_fill_n 会根据元素的类型 选择不同的初始化函数
POD类型则直接批量拷贝初始化
非POD类型则需要逐个调用构造函数constructor
//============================
删除函数
以erase(iterator first,iterator last)为例 删除一段区间的数据元素
iterator erase(iterator first,iterator last){
iterator i = copy(last,finish,first); //将要删除的区域之后的数据 拷贝填充到删除区域
destroy(i,finish);//删除之后的数据
finish = finish-(last-first);//调整finish迭代器的位置a
return first;
}
如图
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
![阿里打赏](https://files.cnblogs.com/files/itdef/ali2.bmp)
![微信打赏](https://files.cnblogs.com/files/itdef/weixin2.bmp)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步