Effective STL中文版:50条有效使用STL的经验预售商品,预计05月25日到货(双色)

Effective STL中文版:50条有效使用STL的经验预售商品,预计05月25日到货(双色)
作 者: 梅耶 潘爱民 陈铭 邹开红
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 程序设计 计算机/网络
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  ScottMeyers,世界顶级C++软件开发技术权威之一。他是两本畅销书Effective C++和More EffectiveC++的作者,以前曾经是C++Report的专栏作家。他经常为C/C++ UsersJournal和Dr. Dobb's Journal撰稿,也为全球范围内的客户做咨询活动。他也是Advisory Boards for NumeriX LLC和InfoCruiser公司的成员。他拥有BrownUniversity的计算机科学博士学位。 潘爱民,任职于阿里云计算有限公司,担任阿里云OS首席架构师。长期从事软件和系统技术的研究与开发工作,撰写了大量软件技术文章,著译了多部经典计算机图书,在国内外学术刊物上发表了30多篇文章。曾经任教于北京大学和清华大学(兼职)。后进入工业界,先后任职于微软亚洲研究院、盛大网络发展有限公司和阿里云计算有限公司。目前也是工信部移动操作系统专家组成员。潘爱民获得了数学学士学位和计算机科学博士学位,主要研究领域包括软件设计、信息安全、操作系统和互联网技术。

内容简介

C++标准模板库(STL)是革命性的,但是要想学会并用好却并不容易。Scott Meyers(Effective C++与More effective c++的作者)揭示了专家 总结的一些关键规则,既有专家们总是采用的做法,也有专家们总是避免的做法。通过这些规则,STL程序员可以最大限度地使用STL。在讲述50条指导原则时, 本书提供了透彻的分析和深刻的实例,以让读者学到要做什么,什么时候该这样做,以及为什么要这样做。

图书目录

引言...............................................................................................................1

容器..........................................................................................9

第1

条:慎重选择容器类型。...............................................................

第2

条:不要试图编写独立于容器类型的代码。....................................

第3

条:确保容器中的对象拷贝正确而高效。.......................................

第4

条:调用empty

而不是检查size()是否为0。...................................

第5

条:区间成员函数优先于与之对应的单元素成员函数。............................

第6

条:当心C++编译器最烦人的分析机制。....................................................

第7

条:如果容器中包含了通过new

操作创建的指针,切记在容器对象析构前将

指针delete

掉。.........................................................................

第8

条:切勿创建包含auto_ptr

的容器对象。.........................................

第9

条:慎重选择删除元素的方法。...............................................................

第10

条:了解分配子(allocator)的约定和限制。...........................................

第11

条:理解自定义分配子的合理用法。.............................................

第12

条:切勿对STL

容器的线程安全性有不切实际的依赖。.........................

vector

和string

.....................................................................................51

第13

条:vector

和string

优先于动态分配的数组。.............................................

第14

条:使用reserve

来避免不必要的重新分配。.............................................

第15

条:注意string

实现的多样性。..........................................................

第16

条:了解如何把vector

和string

数据传给旧的API。....................................

第17

条:使用“swap

技巧”除去多余的容量。...................................................

第18

条:避免使用vector。.................................................................................

关联容器..........................................................................................................................67

第19

条:理解相等(equality)和等价(equivalence)的区别。......................................

第20

条:为包含指针的关联容器指定比较类型。........................................

第21

条:总是让比较函数在等值情况下返回false。..............................................

第22

条:切勿直接修改set

或multiset

中的键。...............................................

第23

条:考虑用排序的vector

替代关联容器。...............................................

第24

条:当效率至关重要时,请在map::operator[

]与map::insert

之间谨慎做出选择。.....

......................

第25

条:熟悉非标准的散列容器。...........................................................................

迭代器..............................................................................................................95

第26

条:iterator

优先于const_iterator、reverse_iterator

及const_reverse_iterator。.....95

第27

条:使用distance

和advance

将容器的const_iterator

转换成iterator。............

第28

条:正确理解由reverse_iterator

的base()成员函数所产生的iterator

的用法。....

......................

第29

条:对于逐个字符的输入请考虑使用istreambuf_iterator。.........................

算法...............................................................................................................................106

第30

条:确保目标区间足够大。.......................................................................

第31

条:了解各种与排序有关的选择。................................................................110

第32

条:如果确实需要删除元素,则需要在remove

这一类算法之后调用erase。...........115

第33

条:对包含指针的容器使用remove

这一类算法时要特别小心。.....................118

第34

条:了解哪些算法要求使用排序的区间作为参数。..................................

第35

条:通过mismatch

或lexicographical_compare

实现简单的忽略大小写的字符

串比较。..................................................................

第36

条:理解copy_if

算法的正确实现。.............................................................

第37

条:使用accumulate

或者for_each

进行区间统计。....................................

函数子、函数子类、函数及其他...........................................................................135

第38

条:遵循按值传递的原则来设计函数子类。.....................................

第39

条:确保判别式是“纯函数”。.................................................................

第40

条:若一个类是函数子,则应使它可配接。...............................................

第41

条:理解ptr_fun、mem_fun

和mem_fun_ref

的来由。.................................

第42

条:确保less与operator<具有相同的语义。........................................

在程序中使用STL

..............................................................................................152

第43

条:算法调用优先于手写的循环。.................................................................

第44

条:容器的成员函数优先于同名的算法。........................................................

第45

条:正确区分count、find、binary_search、lower_bound、upper_bound

equal_range。.......

......................

第46

条:考虑使用函数对象而不是函数作为STL

算法的参数。..................................

第47

条:避免产生“直写型”(write-only)的代码。................................................

第48

条:总是包含(#include)正确的头文件。.................................................

第49

条:学会分析与STL

相关的编译器诊断信息。.....................................

第50

条:熟悉与STL

相关的Web

站点。...........................................................

参考书目........................................................................................189

附录A

地域性与忽略大小写的字符串比较.................................................193

附录B

对Microsoft

的STL

平台的说明..........................................202