zoukankan      html  css  js  c++  java
  • 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驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    HBASE学习笔记(一)
    模板:循环数据库表
    where(泛型类型约束)
    如何很好的使用Linq的Distinct方法
    Sql自定义表类型批量导入数据
    Linq select 语法
    JTemplate学习(四)
    JTemplate学习(三)
    JTemplate学习(二)
    正则表达式学习
  • 原文地址:https://www.cnblogs.com/itdef/p/6972493.html
Copyright © 2011-2022 走看看