zoukankan      html  css  js  c++  java
  • STL源码剖析

    这两天略读完了《STL源码剖析》,之所以是略读,就是只看大体,不讲具现(这个词在《深度探析C++对象模型》中比较多)

    已经看过好几本C++的书了,感觉C++本身设计的博大精深,而C++编译器就更是一个神奇的东西,换句话说,你永远不知道C++编译器背着你做了哪些出乎你意料的事

    不扯远了

    我主要是想看STL容器的具体实现而去看《STL源码剖析》的,的确收获不少,但不止着一个,总结而言,大概有三点觉得印象很深

    1. 内存分配:所谓分配有两级实现,大于128k内存由第一级实现(malloc和free);小于128k的由第二级实现,第二级采用内存池的思想,内部分配了8的倍数的内存,如,8k, 16k,24k,32k,40k,...128k。这个分配方法,一来体现了内存池的分配方式,另外让我想起了linux内存的伙伴系统,似乎有异曲同工之妙
    2. Traits编程方式:首先看设计模式的迭代器模式“提供了访问类的接口而不暴露类的具体实现”,这就是所谓的特性编程,什么叫做特性编程呢,我想我可以这么理解:一组事物会表现出某种特性,而你掌握了这种特性,你就掌握了跟它交流的方法,就好比语言,一旦你知道了如何讲普通话,你就可以和其他人交流而不用具体限定跟哪个人,普通话可以作为中国人的一种特性。
    3. 实现方式:映像深刻的就是list是双向链表实现的,deque用的结构很复杂,用地址map伪装成两端可读写的容器,大概就是一个又一个连续的内存块,通过一个地址映射将它们都串起来,其它的我都好像已经看过了,已经了解了

    先就这么简单的总结总结吧

  • 相关阅读:
    NGINX+uWsgi部署Django项目
    centos7 docker启动服务,无法通过宿主机ip进行访问
    基于docker 搭建Prometheus+Grafana
    centos7安装MySQL5.7
    centos7下安装python7
    loadrunner27257问题解决办法
    学习Python+selenium自动化感想
    find_element和find_elements
    正则表达式
    Jdk自带的Windows性能监控工具JVM
  • 原文地址:https://www.cnblogs.com/moondark/p/3436450.html
Copyright © 2011-2022 走看看