《Effective STL中文版》前言
    我第一次写关于STL(Standard Template
Library,标准模板库)的介绍是在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. Python数据分析与挖掘所需的Pandas常用知识

    Python数据分析与挖掘所需的Pandas常用知识 前言Pandas基于两种数据类型:series与dataframe.一个series是一个一维的数据类型,其中每一个元素都有一个标签.series ...

  2. 10个步骤教你如何安装Anaconda安装,Python数据分析入门必看

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:小白 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...

  3. Python数据分析——numpy基础简介

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:基因学苑 NumPy(Numerical Python的简称)是高性 ...

  4. 《谁说菜鸟不会数据分析》高清PDF全彩版|百度网盘免费下载|Python数据分析

    <谁说菜鸟不会数据分析>高清PDF全彩版|百度网盘免费下载|Python数据分析 提取码:p7uo 内容简介 <谁说菜鸟不会数据分析(全彩)>内容简介:很多人看到数据分析就望而 ...

  5. 《Python金融大数据分析》高清PDF版|百度网盘免费下载|Python数据分析

    <Python金融大数据分析>高清PDF版|百度网盘免费下载|Python数据分析 提取码:mfku 内容简介 唯一一本详细讲解使用Python分析处理金融大数据的专业图书:金融应用开发领 ...

  6. [Python数据分析]新股破板买入,赚钱几率如何?

    这是本人一直比较好奇的问题,网上没搜到,最近在看python数据分析,正好自己动手做一下试试.作者对于python是零基础,需要从头学起. 在写本文时,作者也没有完成这个小分析目标,边学边做吧. == ...

  7. 【Python数据分析】Python3多线程并发网络爬虫-以豆瓣图书Top250为例

    基于上两篇文章的工作 [Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 已经正确地实现 ...

  8. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  9. 【搬砖】【Python数据分析】Pycharm中plot绘图不能显示出来

    最近在看<Python数据分析>这本书,而自己写代码一直用的是Pycharm,在练习的时候就碰到了plot()绘图不能显示出来的问题.网上翻了一下找到知乎上一篇回答,试了一下好像不行,而且 ...

  10. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

随机推荐

  1. 2.1 LibCurl编程流程(转)

    转载地址:http://blog.chinaunix.net/u/17660/showart_1822514.html2 LibCurl编程2.1 LibCurl编程流程在基于LibCurl的程序里, ...

  2. ORA-01439: column to be modified must be empty to change datatype

    修改数据库字段类型,但是由于数据表已经存在数据,无法修改: 显示错误:  写道 ORA-01439: column to be modified must be empty to change dat ...

  3. Android--多线程之Handler(转)

    前言 Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的 ...

  4. 我开发的Quartz Cron表达式生成器

    Cron Expressions——Cron 表达式 Cron表达式被用来配置CronTrigger实例.Cron表达式是一个由7个子表达式组成的字符串.每个子表达式都描述了一个单独的日程细节.这些子 ...

  5. pushlet实现服务器端向客户端推送信息

    使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过API主动 ...

  6. DataTable与List互换

    public static class List2DataTable { #region "Convert Generic List to DataTable" /// <s ...

  7. C++ STL中vector(向量容器)使用简单介绍

    原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相 ...

  8. 获得select下拉框的值

    html -------------------------------------------------------------------------------------- <sele ...

  9. Lucene.Net+盘古分词器(详细介绍)(转)

    出处:http://www.cnblogs.com/magicchaiy/archive/2013/06/07/LuceneNet%E7%9B%98%E5%8F%A4%E5%88%86%E8%AF%8 ...

  10. powerdesigner12.5入门教程

    2015年1月23日21:13:43|  分类: 默认分类 |  标签: |字号大中小 订阅 转自http://blog.163.com/aijingyuan_198814/blog/static/1 ...