《Effective STL中文版》译序
就像本书的前两本姊妹作(Effective C++、More Effective C++)一样,本书的侧重点仍然在于提升读者的经验,只不过这次将焦点瞄准了C++标准库,而且是其中最有意思的一部分——STL。
C++是一门易学难用的编程语言,从学会使用C++到用好C++需要经过不断的实践。Scott Meyers 的这三本姊妹作分别从各个不同的角度来帮助你缩短这个过程。C++语言经过了近二十年的发展,已渐趋完善。尽管如此,在使用C++语言的时候,仍然有许多陷阱,有的陷阱非常明显,一经点拨就可以明白;而有的陷阱则不那么直截了当,需要仔细地分析才能揭开那层神秘的面纱。
本书是针对STL 的经验总结,书中列出了50 个条款,绝大多数条款都解释了在使用STL时应该注意的某一个方面的问题,并且详尽地分析了问题的来源、解决方案的优劣。这是作者在教学和实践过程中总结出来的经验,其中的内容值得我们学习和思考。
STL 的源码规模并不大,但是它蕴含的思想非常深刻。在C++标准化的过程中,STL 也被定格和统一。对于每一个STL 实现,我们所看到的被分为两部分:一是STL 的接口,这是应用程序赖以打交道的基础,也是我们所熟知的STL;二是STL 的实现,特别是一些内部的机理,有的机理是C++标准所规定的,但是有的却是实现者自主选择的。在软件设计领域中有一条普遍适用的规则是“接口与实现分离”,但是对于STL,你不能简单地使用这条规则。虽然你写出来的程序代码只跟STL 的接口打交道,但是用好STL 则需要建立在充分了解STL 实现的基础之上。你不仅需要了解对所有STL 实现都通用的知识,也要了解针对你所使用的STL 实现的特殊知识。那么,你该如何来把握接口与实现之间的关系呢?本书讲述了许多既涉及接口也关系到具体实现的STL 用法,通过对这些用法的讲解,读者可以更加清楚地了解应该如何来看待这些与实现相关的知识。
这两年来,有关STL 的书籍越来越多,而且许多C++书籍也开始更加关注于STL 这一部分内容。对于读者来说,这无疑是一件好事,因为STL 难学的问题终于解决了。我们可以看到,像vector 和string 等常用的STL 组件几乎出现在任何一个C++程序中。但是,随之而来的STL难用的问题却暴露出来了,程序员要想真正发挥STL 的强大优势并不容易。在现有的STL 书籍中,像本书这样指导读者用好STL 的书籍并不多见。
本书沿袭了作者一贯的写作风格,以条款的形式将各种使用STL 的经验组织在一起,书中主要包括以下内容:
如何选择容器的类型。STL 中容器的类型并不多,但是不同的容器有不同的特点,所以选择恰当的容器类型往往是解决问题的起点。本书中还特别介绍了与vector 和string两种容器有关的一些注意事项。
涉及关联容器有更多的陷阱,一不留神就可能陷入其中。作者专门指出了关联容器中一些并不直观的要点,还介绍了一种非标准的关联容器——散列容器。
迭代器是STL 中指针的泛化形式,也是程序员访问容器的重要途径。本书讨论了与const_iterator 和reverse_iterator 有关的一些问题。以我个人之见,本书这部分内容略显单薄,毕竟迭代器在STL 中是一个非常关键的组件。
STL 算法是体现STL 功能的地方,一个简单的算法调用或许完成了一件极为复杂的事情,但是要用好STL 中众多的算法并不容易,本书给出了一些重要的启示。
函数对象是STL 中用到的关键武器之一,它使得STL 中每一个算法都具有极强的扩展性,本书也特别讨论了涉及函数和函数对象的一些要点。
其他方方面面,包括在算法和同名成员函数之间如何进行区别、如何考虑程序的效率、如何保持程序的可读性、如何解读调试信息、关于移植性问题的考虑,等等。
本书并没有面面俱到地介绍所有要注意的事项,而只是挑选了一些有代表性的,也是最有普遍适用性的问题和例子作为讲解的内容。有些问题并没有完美的解决方案,但是,作者已经把这个问题为你分析透了,所以最终的解决途径还要取决于作为实践者的你。
本书的翻译工作是我和陈铭、邹开红合作完成的,其中邹开红完成了前25 条的初译工作,陈铭完成了后25 条的初译工作,最后我完成了所有内容的终稿工作,同时我也按照原作者给出的勘误作了修订。错误之处在所难免,请读者谅解。
对于每一个期望将STL 用得更好的人,这本书值得一读。
潘爱民
本文节选自《Effective STL中文版》一书
潘爱民 陈铭 邹开红 著
电子工业出版社出版
相关推荐
《Effective STL》是由著名软件设计专家Scott Meyers所著的一本关于Standard Template Library(STL)的实用指南,中文版的发布使得更多的中国读者能够深入理解并熟练运用STL。这本书是C++程序员的必备参考书籍,...
在《中文版Effective STL:50条有效使用STL的经验》中,畅销书作家ScottMeyers(EffectiveC++和MoreEffectiveC++的作者)揭示了专家总结的一些关键规则,包括专家们总是采用的做法,以及专家们总是避免的做法。...
《Effective STL》是一本专注于C++标准模板库(STL)使用的指南书籍,由Scott Meyers撰写。书中详细讲解了如何有效地使用STL中的容器、迭代器、算法和函数对象,以及如何避免常见的陷阱和误区。本书针对的读者是已经...
### Effective STL 中文版 关键知识点解析 #### 一、STL简介与背景 - **标准模板库(Standard Template Library, STL)**是C++的一个关键组成部分,它提供了一组通用算法以及容器类来帮助开发者高效地进行软件开发...
### 《Effective STL》核心知识点概述 #### 一、STL简介与背景 - **标准模板库(STL)**是C++标准库的一部分,它为C++开发者提供了一组通用的数据结构和算法,旨在提高代码重用性和编程效率。 - **发展历史**:STL...
《Effective STL中文版:50条有效使用STL的经验》是C++编程领域的一本经典著作,由Scott Meyers撰写,旨在帮助程序员更好地理解和利用标准模板库(STL)。这本书提出了50个实用的建议,涵盖了STL的核心组件,如容器...
《Effective STL 中文版》是一本深入探讨C++标准模板库(STL)使用技巧与最佳实践的专业书籍。STL作为C++编程中的重要组件,包含了容器、迭代器、算法和函数对象等核心概念,为程序员提供了高效且强大的数据结构和算法...
《Effective STL中文版》是C++开发者不可或缺的一本经典读物,它深入探讨了标准模板库(Standard Template Library,简称STL)的高效使用方法。STL是C++编程中的核心部分,包含容器、迭代器、算法和函数对象等重要...
Effective STL 中文版(完整版) 适合初学者,有兴趣学好的不妨下载研究一下
《Effective STL》是由著名C++专家Scott Meyers所著的一本经典编程指南,该书深入探讨了Standard Template Library(STL)的高效使用方法。STL是C++库中的一个核心部分,它提供了容器(如vector、list、set等)、...
Effective+STL+中文版.pdf
接下来是`EFFective STL中文版(附中文笔记).CHM`,这是Scott Meyers的《Effective STL》一书的中文版本。这本书深入探讨了如何更有效地使用STL,提出了许多实践建议和技巧。Meyers的“Effective”系列书籍以其实用性...
《Effective STL》是Scott Meyers撰写的一本关于标准模板库(STL)的实用指南,这本书深入探讨了如何更有效地使用STL,提高C++编程效率。STL是C++编程中的一个强大工具集,包括容器(如vector、list、set等)、迭代...