• STL源码剖析


    转:http://www.cnblogs.com/moondark/p/3436450.html

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

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

  • 相关阅读:
    软件工程课程-助教自我介绍
    软件工程课程-课代表信息
    软件工程课程-课后作业
    小知识记录:第四篇
    小知识记录:第三篇
    小知识记录:第二篇
    小知识记录:第一篇
    dd命令和fio命令测试磁盘io性能
    horizon仪表盘安装
    OpenStack安装部署笔记
  • 原文地址:https://www.cnblogs.com/qiaozhoulin/p/5227664.html
Copyright © 2020-2023  润新知