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驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    个人总结一些常见的css问题
    工作中的js总结
    js面向对象
    js的一些特性
    js 实现改变字体大小
    将博客搬至CSDN
    最大连续子序列----DP动态规划
    捡石子---贪心算法(huffman)
    素数环问题---深度搜索遍历
    nyoj---12 喷水装置(二)--区间覆盖问题
  • 原文地址:https://www.cnblogs.com/itdef/p/6972493.html
Copyright © 2011-2022 走看看