《Effective STL中文版》前言
    我第一次写关于STL(Standard TemplateLibrary,标准模板库)的介绍是在1995 年,当时我在More Effective C++的最后一个条款中对STL 做了粗略的介绍。此后不久,我就陆续收到一些电子邮件,询问我什么时候开始写Effective STL。

有好几年时间我一直在拒绝这种念头。刚开始的时候,我对STL 并不非常熟悉,根本不足以提供任何关于STL 的建议。但是随着时间的推移,以及我的经验的增长,我的想法开始有了变化。毫无疑问,STL 库代表了程序效率和扩展性设计方面的一个突破,但是当我开始真正使用STL 的时候,却发现了许多我原来不可能注意到的实际问题。除了最简单的STL 程序以外,要想移植一个稍微复杂一点的STL 程序都会面临各种各样的问题,这不仅仅是因为STL 库实现有各自的特殊之处,而且也是因为底层的编译器对于模板的支持各不相同——有的支持非常好,但有的却非常差。要获得STL 的正确指南并不容易,所以,学习“STL 的编程方式”非常困难,即使在克服了这个阶段的障碍之后,你要想找到一份既容易理解又描述精确的参考文档仍然是一大困难。可能最沮丧的是,即使一个小小的STL 用法错误,也常常会导致一大堆的编译器诊断信息,而且每一条诊断信息都可能有上千个字符长,并且大多数会引用到一些在源代码中根本没有提到的类、函数或者模板(几乎都很难理解)。尽管我对STL 赞赏有加,并且对STL 背后的人们更是钦佩无比,但是要向从事实际开发工作的程序员推荐STL 却感到非常不舒服。因为,我自己并不确定要有效地使用STL 是否是可能的。

然后,我开始注意到了一些让我非常惊讶的事情。尽管STL 存在可移植性问题,尽管它的文档并不完整,尽管编译器的诊断信息有如传输线上的噪声一样,但是,我的许多咨询客户正在使用STL。而且,他们并不只是把STL 拿来玩一玩,而是在用它开发实际的产品。这是一个很重要的启示。过去我知道STL 是一个设计非常考究的模板库,这时我逐渐感觉到,既然程序员们愿意忍受移植性的麻烦、不够完整的文档及难以理解的错误消息,那么这个库除了良好的设计以外,一定还有其他更多的优势。随着专业程序员的数量越来越多,我意识到,即使是一个很差的STL 实现,也胜过没有实现。

更进一步,我知道STL 的境况正在好转。C++库和编译器越来越多地遵从C++标准,好的文档也开始出现了,而且编译器的诊断信息也在改进。因此我决定投身到这场STL 运动中,尽我的一份微薄之力。本书就是我努力的结果:50 条有效使用STL 的经验。

我原来的计划是在1999 年的下半年写作本书,脑子里一直是这样想的,并且也有了一个提纲。但后来我改变了路线。我搁下了本书的写作,而去开发一门有关STL 的引导性培训课程,并且也教授了几组程序员。大约一年以后,我又回到这本书的写作上,并根据培训课程中积累的经验重新修订了本书的提纲。就如同Effective C++成功地以实际程序员所面临的问题为基础一样,我希望本书也以类似的方式来面对STL 编程过程中的各种实际问题,特别是那些对于专业开发人员尤为重要的实际问题。

本文节选自《Effective STL中文版》一书

潘爱民 陈铭 邹开红 著

电子工业出版社出版

《Effective STL中文版》前言相关推荐

  1. 《设计模式之禅》前言

    终于可以写前言了,这说明<设计模式之禅>已经基本完成,可以长嘘一口气了. 为什么写<设计模式之禅>      今年5月份,我在JavaEye上发了一个帖子,其中提到自己已经工作 ...

  2. 设计模式领域公认的3本经典著作之一《设计模式之禅》 [豆瓣评分 8.70]

    下载地址...... 关注公众号:程序员白楠楠,领取. 需要的朋友点我获取:设计模式之禅 图书简介...... 本书是设计模式领域公认的3本经典著作之一,"极具趣味,容易理解,但讲解又极为严 ...

  3. 读秦小波《设计模式之禅》 -- 工厂模式

    设计模式是一种非常有用的编程技巧,它对于代码的重构有些非常重要的作用,对于软件开发人员来说,需要理解并尝试着使用这些设计的方法. 个人感觉<设计模式之禅>这本书中讲解的非常具体,每个模式都 ...

  4. 设计模式之禅--思维导图

    原图ProcessOn里搜索:设计模式之禅

  5. 23种设计模式彩图-设计模式之禅

    <The Zen of Design Patterns> -<设计模式之禅> 书中的23种设计模式彩图:

  6. 设计模式之禅【六大设计原则】

    大旗不挥,谁敢冲锋--6大设计原则 单一职责原则 "你设计的类符合SRP原则吗?"--保准对方立马"萎缩"掉,而且还一脸崇拜的看着你,心想"老大确实英 ...

  7. 设计模式之禅【原型模式】

    真刀实枪之原型模式 先发个个性化电子账单来引出今天的主角 个性化服务 一般银行都会要求个性化服务,添加一些个人信息在提示信息之前. 递送的成功率 邮件的递送成功率有一定的要求,由于大批的发送邮件,会被 ...

  8. 设计模式之禅之单一职责原则

    声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 单一职责原则(Single Responsibility Principle) 1.定义:    在接口 ...

  9. 设计模式之禅【状态模式】

    真刀实枪之状态模式 从电梯说起 随着城市的发展,有两样东西的发明在城市的发展中起到非常重要的作用 汽车:横向发展 电梯:纵向发展 既然说电梯,那就看看电梯有哪些动作 开门 关门 运行 停止 好了,动作 ...

  10. 设计模式之禅【组合模式】

    真刀实枪之组合模式 从公司的人事架构谈起吧 公司的组织架构 从上图中可以分析出: 有分支的节点(树枝节点) 无分支的节点(叶子节点) 根节点(无父节点) 有了树状结构图,再看看类图长啥样吧! 这个类图 ...

最新文章

  1. 今晚8点直播 | 详讲NLP的经典应用实践——文本分类
  2. 收购Deis之后,微软首次动作发布了Draft
  3. iOS项目之交换方法(runtime)
  4. Python零碎知识(10):对日期时间的处理
  5. Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置
  6. 高通骁龙888来了!新命名就是为了中国,小米11将全球首发
  7. 本以为用的MyBatis框架就万无一失了,没想到还是被黑客注入了,我真的无语了!...
  8. matlab遗传算法工具箱及应用 pdf,MATLAB遗传算法工具箱及应用(雷英杰)
  9. bugly热更新,提交补丁时提示未匹配到可应用补丁包的APP版本,请确认补丁包的基线版本是否配置正确
  10. 企业微信在线客服机器人系统开发
  11. 如何停止线程?stop方法过时弊端
  12. java mars2_Mars-java 2.1.5 发布
  13. vscode开启鼠标滚轮缩放字体大小设置
  14. 如何用python画流程图_Markdown笔记:如何画流程图
  15. mathtype在word出现宏被禁止的错误 终于解决
  16. 临近服务直接发现和通信的授权与撤回
  17. wampserver局域网可以访问在线状态下的本地网站
  18. 离梦想最近的时候是什么时候?
  19. VMware虚拟机ubuntu显示屏幕太小解决问题
  20. 一个大公司程序员的牢骚

热门文章

  1. Tensor flow 实战Google深度学习框架 笔记摘要Pfour
  2. 【二分匹配】【匈牙利算法即由增广路求最大匹配模板】
  3. 软件体系架构课后作业04
  4. 华为Mate8 NFC 时好时坏,怎么解决呢?
  5. [MySql] - 数据库备份还原
  6. 使用JsonCpp编写JSON封装程序的方法
  7. Collection的另外一个子类LinkedListSet集合
  8. Python初学手记----在window系统中安装环境
  9. Java多线程之JUC包:CountDownLatch源码学习笔记
  10. 电动车充电器原理及带电路图维修