《Effective STL中文版》前言
《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中文版》前言的更多相关文章
- Python数据分析与挖掘所需的Pandas常用知识
Python数据分析与挖掘所需的Pandas常用知识 前言Pandas基于两种数据类型:series与dataframe.一个series是一个一维的数据类型,其中每一个元素都有一个标签.series ...
- 10个步骤教你如何安装Anaconda安装,Python数据分析入门必看
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:小白 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...
- Python数据分析——numpy基础简介
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:基因学苑 NumPy(Numerical Python的简称)是高性 ...
- 《谁说菜鸟不会数据分析》高清PDF全彩版|百度网盘免费下载|Python数据分析
<谁说菜鸟不会数据分析>高清PDF全彩版|百度网盘免费下载|Python数据分析 提取码:p7uo 内容简介 <谁说菜鸟不会数据分析(全彩)>内容简介:很多人看到数据分析就望而 ...
- 《Python金融大数据分析》高清PDF版|百度网盘免费下载|Python数据分析
<Python金融大数据分析>高清PDF版|百度网盘免费下载|Python数据分析 提取码:mfku 内容简介 唯一一本详细讲解使用Python分析处理金融大数据的专业图书:金融应用开发领 ...
- [Python数据分析]新股破板买入,赚钱几率如何?
这是本人一直比较好奇的问题,网上没搜到,最近在看python数据分析,正好自己动手做一下试试.作者对于python是零基础,需要从头学起. 在写本文时,作者也没有完成这个小分析目标,边学边做吧. == ...
- 【Python数据分析】Python3多线程并发网络爬虫-以豆瓣图书Top250为例
基于上两篇文章的工作 [Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 已经正确地实现 ...
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...
- 【搬砖】【Python数据分析】Pycharm中plot绘图不能显示出来
最近在看<Python数据分析>这本书,而自己写代码一直用的是Pycharm,在练习的时候就碰到了plot()绘图不能显示出来的问题.网上翻了一下找到知乎上一篇回答,试了一下好像不行,而且 ...
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...
随机推荐
- 2.1 LibCurl编程流程(转)
转载地址:http://blog.chinaunix.net/u/17660/showart_1822514.html2 LibCurl编程2.1 LibCurl编程流程在基于LibCurl的程序里, ...
- ORA-01439: column to be modified must be empty to change datatype
修改数据库字段类型,但是由于数据表已经存在数据,无法修改: 显示错误: 写道 ORA-01439: column to be modified must be empty to change dat ...
- Android--多线程之Handler(转)
前言 Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的 ...
- 我开发的Quartz Cron表达式生成器
Cron Expressions——Cron 表达式 Cron表达式被用来配置CronTrigger实例.Cron表达式是一个由7个子表达式组成的字符串.每个子表达式都描述了一个单独的日程细节.这些子 ...
- pushlet实现服务器端向客户端推送信息
使用Pushlet来实现服务器端向客户端推送信息 1. 实现方式: 有两种实现方式: 1. 通过配置文件来实现定时的从服务器端向客户端推送信息 2. 通过API主动 ...
- DataTable与List互换
public static class List2DataTable { #region "Convert Generic List to DataTable" /// <s ...
- C++ STL中vector(向量容器)使用简单介绍
原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相 ...
- 获得select下拉框的值
html -------------------------------------------------------------------------------------- <sele ...
- Lucene.Net+盘古分词器(详细介绍)(转)
出处:http://www.cnblogs.com/magicchaiy/archive/2013/06/07/LuceneNet%E7%9B%98%E5%8F%A4%E5%88%86%E8%AF%8 ...
- powerdesigner12.5入门教程
2015年1月23日21:13:43| 分类: 默认分类 | 标签: |字号大中小 订阅 转自http://blog.163.com/aijingyuan_198814/blog/static/1 ...