zoukankan      html  css  js  c++  java
  • std::vector 源代码

    vector身为一个动态数组,每次以空间不够的时候会以2倍的倍数增加,而且每次扩充的时候分为3部,分配内存,拷贝数据,释放内存

    vector内部有两个成员变量,begin,finish ,endcatagory,分别指向数据头尾合容器末尾,相应的内部成员的内部实现也都是通过这3个类成员

    看下面额vector源代码,箭头路径·是在探索iterator的类型,最后发现他就是_tp*类型,说明vector::iterator的类型还是一个指针,并不是什么class

    当内部内存不够的时候,内部调用的是allocator,进而电泳operator new - 》malloc,分配器底层最终使用的还是malloc分配的内存,分配新的内存后,要进行旧内存到新内存数据的拷贝,这个时候要调用拷贝构造函数,当所有的数据的拷贝完了,不要忘记,最后还有一个新的加入的数据,所有这些做完了之后,内部还有释放就得内存,所以就要调用destroy析构函数,随着数据的增多,每次扩充的时候就需要调用大量的拷贝构造函数和析构函数,所以非常浪费时间,最后还是还用deallocator去释放内存

  • 相关阅读:
    centos部署bladex boot 之docker安装
    git ssh key创建和github使用
    Debian root登录设置
    Linux软件源
    Secure backup
    Python简易web服务
    好久没有更新博客了
    Python实现无向图最短路径
    DWZ使用中遇到的坑
    tronado学习
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/6391769.html
Copyright © 2011-2022 走看看