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伪装成两端可读写的容器,大概就是一个又一个连续的内存块,通过一个地址映射将它们都串起来,其它的我都好像已经看过了,已经了解了

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

  • 相关阅读:
    基于单片机定时器---年月日时分秒的算法
    按位查询算法---基于Perimiter Sensor
    MFC File crc 计算
    二叉树的层次遍历

    动态规划
    贪心算法 动态规划
    爱信息图床测试
    前端小白的个人习惯和笔记(一)
    过年了,是不是应该写点代码祝福别人
  • 原文地址:https://www.cnblogs.com/moondark/p/3436450.html
Copyright © 2011-2022 走看看