Effective STL前言

原创 2003年06月26日 10:10:00
It came without ribbons!
It came without tags! It came without packages, boxes or bags!
——Dr. Seuss, How the Grinch Stole Christmas!, Random House, 1957

我第一次写关于Standard Template Library的东西是在1995年,那时,我决定把More Effective C++的最后一个条款写成一个STL的简要概览。我早该更好地了解STL。不久以后,我开始收到一些mail,问我什么时候写Effective STL。

我把这个想法忍耐了几年。一开始,我对STL不够熟悉,所以不能给出关于它的建议。但随着时间的推移,我的STL的经验丰富了,主要问题出在其他方面。当一个程序库的在效率和可扩展性设计上表现出突破性的时候从来没有出过什么问题,但当开始使用STL时,这成了我不能预见的实际问题。迁移到一个几乎最简单的STL程序都成了一个挑战,不光是因为库的实现变化多端,而且因为现有的编译器对模板支持有好有坏。STL的教材很难得到,所以学习“用STL方式编程”很难;但即使跨越了这个障碍,找到正确易学的参考文档同样很困难。可能使人畏惧的是,即使最小的STL使用错误往往会导致一个编译器诊断的风暴——每一个错误都有上千个字长,而且大多涉及的类,函数或模板在令人厌恶的源代码中并没有被提及——几乎都是难以理解的。虽然我很钦佩STL和它背后的英雄们,但我还是觉得把STL推荐给在业的程序员并不合适。我不能肯定能有效率地使用STL。

然后我开始注意到一些让我感到惊奇的事情。尽管有很多小问题,尽管只有令人消沉的文档,尽管编译器的出错信息像无线电信号杂音,但仍然有很多我的咨询客户在使用STL。而且,他们不只是玩玩而已,他们竟然把STL用到了产品的代码中!这是一个革命。我知道STL表现出的是一流的设计,但程序员是不会喜欢用“必须忍耐轻微头痛,只有贫乏的文档和天书般的错误信息,但设计得很好”的程序库的。我了解到越来越多的专业程序员都认为即使一个实现得很不好的STL也比什么都没有好得多。

此外,我知道关于STL的境遇只会越来越好。程序库和编译器对(它们的)标准的兼容性会越来越好,更好的文档将会出现(它已经存在了——请见从297页开始的“参考书目”),而且编译器的诊断会渐渐改进(在极大程度上,我们仍然在等待,但条款49提供了怎样在其间应付的建议)。因此我决定插嘴,尽一份力量来支持STL运动的萌芽。这本书就是结果:改善使用C++ STL的50个有效做法。

一开始,我计划在1999年下半年写这本书。带着这个想法,我组织了一个大纲。但我暂停和改变了进程。我停止了写书的工作,开发了一个介绍性的STL训练课程,把它教给几拨不同的程序员。大约一年后,我回到写书的工作中,根据我在训练课程中得到的经验意味深长地修改了大纲。和我的Effective C++成功的方法一样,它们都是以真正的程序员所面对的问题为基础的。我希望Effective STL同样从事于STL编程的实践方面——这是对专业开发人员最重要的方面。

我一直在寻找着能让我加深对C++理解的方法。如果你对STL编程有新的建议或者如果你对这本书有什么评论的话,请让我知道。另外,让这本书尽可能的正确是我的继续的目标,所以如果谁挑出了这本书的任何一个错误请务必告诉我——不论是技术、文法、错别字、或任何其他东西——我将在本书再次印刷的时候,把第一位挑出错误的读者大名加到致谢名单中。请将你的建议、见解、批评发至estl@aristeia.com

我维护有本书第一次印刷以来的修订记录,其中包括错误更正、文字修润、以及技术更新。这份记录可以从Effective STL的勘误表网站http://www.aristeia.com/BookErrata/estl1e-errata.html得到。

如果你希望在我对此书作出修改时得到通知,我想你应该加入我的邮件列表。我用这个列表来通知对我的C++工作感兴趣的人。详情请见http://www.aristeia.com/MailingList/

SCOTT DOUGLAS MEYERS
STAFFORD, OREGON
http://www.aristeia.com/
APRIL 2001

Effective STL 中文版(完整版)

 Winter总算找到《Effective STL》的完整中文版了,奉献给大家。书中作者解释了怎样结合STL组件来在库的设计得到最大的好处。这样的信息允许你对简单、直接的问题开发简单、直接的解决方案,...
  • WinterTree
  • WinterTree
  • 2005年01月16日 01:23
  • 16313

Effective STL目录

    从去年12月开始,我花了40天看了《Effective STL》这本书,并写了相关的读书笔记,我在考虑是否将这部分笔记在BLOG上贴出来。在此之前,先贴上Effective STL目录,并且强...
  • hanyu1980
  • hanyu1980
  • 2006年06月20日 15:22
  • 1166

Effective STL 中文版(完整版)

Winter总算找到《Effective STL》的完整中文版了,奉献给大家。书中作者解释了怎样结合STL组件来在库的设计得到最大的好处。这样的信息允许你对简单、直接的问题开发简单、直接的解决方案,也...
  • sdnxiaotao
  • sdnxiaotao
  • 2008年07月05日 13:23
  • 438

Effective STL学习

effect stl读书笔记
  • skyztttt
  • skyztttt
  • 2017年02月23日 17:11
  • 376

effective stl 第19条:理解相等(equality)和等价(equivalence)的区别

#include #include #includeusing namespace std;bool ciStringCompare(const string l, const string r) {...
  • u014110320
  • u014110320
  • 2016年09月20日 23:36
  • 251

Effective STL前言

It came without ribbons!It came without tags! It came without packages, boxes or bags!——Dr. Seuss, H...
  • 521
  • 521
  • 2004年12月31日 01:41
  • 1158

《Effective STL中文版》前言

《Effective STL中文版》前言     我第一次写关于STL(Standard TemplateLibrary,标准模板库)的介绍是在1995 年,当时我在More Effective ...
  • broadview2006
  • broadview2006
  • 2013年08月22日 13:19
  • 1580

Effective STL 建议

Vector是一种可以默认使用的序列类型,当很频繁地对序列中部进行插入和删除时应该用lit,当大部分插入和删除发生在序列的头或尾时可以选择deque这种数据结构。          STL是建立在泛...
  • yusiguyuan
  • yusiguyuan
  • 2014年12月06日 08:55
  • 1639

Effective STL 读书笔记——第1条 慎重选择容器类型

test
  • yl1415
  • yl1415
  • 2014年10月03日 10:53
  • 395

C++ STL(标准模板库) 学习资源列表

STL以其独特的魅力得到越来越多的程序员钟爱,STL彻底封装复杂的数据结构,提供丰富灵活的程序接口,同时还能保证程序的运行效率。上次整理的STL技术文章列表得到许多朋友的捧场,这里整理更全面的STL学...
  • chenbuaa
  • chenbuaa
  • 2005年03月17日 12:06
  • 3009
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Effective STL前言
举报原因:
原因补充:

(最多只允许输入30个字)