Effective STL

Effective STL
作 者: Scott Meyers
出版社: 中国电力出版社
丛编项: 原版风暴·深入C++系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  ScottMeyersScottMeyers:世界顶级的C++软件开发技术权威之一。他是两本畅销书EffectiveC++和MoreEffectiveC++的作者,以前曾经是C++Report的专栏作家。他经常为C/C++UsersJournal和Dr.Dobb'sJournal撰稿,也为全球范围内的客户做咨询活动。他也是AdvisoryBoardsforNumeriXLLC和InfoCruiser公司的成员。他拥有BrownUniversity的计算机科学博士学位。>>更多作品

内容简介

C++STL(Standard Template Library,标准模板库)是一次革命,但是学习如何使用它却是一个挑战。在本书中,Scott Meyers(两本最畅销的书《Effective C++》和《More Effective C++》的作者)提示了专家总结的一些关键规则,以便最大限度的使用标准模板库。其他书只是描述了STL中有什么,而本书则讲述了如何使用STL。本书共有50条原则,对于每一条原则,Scott Meyers都通过透彻的分析和经典的实例来进行讲解,从而使读者不仅可以了解要做什么,而且还能够了解何时做以及为何做。像Meyers的其他著作一样,这本书充满了从实践中总结出来的智慧。它清晰、简明、透彻的风格必将使每位STL程序员受益匪浅。

图书目录

Preface.


Acknowledgments.


Introduction.



1.

Containers.



Item

1:

Choose

your

containers

with

care.


Item

2:

Beware

the

illusion

of

container-independent

code.


Item

3:

Make

copying

cheap

and

correct

for

objects

in

containers.


Item

4:

Call

empty

instead

of

checking

size

against

zero.


Item

5:

Prefer

range

member

functions

to

their

single-element

counterparts.


Item

6:

Be

alert

for

C++'s

most

vexing

parse.


Item

7:

When

using

containers

of

newed

pointers,

remember

to

delete

the

pointers

before

the

container

is

destroyed.


Item

8:

Never

create

containers

of

auto_ptrs.


Item

9:

Choose

carefully

among

erasing

options.


Item

10:

Be

aware

of

allocator

conventions

and

restrictions.


Item

11:

Understand

the

legitimate

uses

of

custom

allocators.


Item

12:

Have

realistic

expectations

about

the

thread

safety

of

STL

containers.




2.

Vector

and

string.



Item

13:

Prefer

vector

and

string

to

dynamically

allocated

arrays.


Item

14:

Use

reserve

to

avoid

unnecessary

reallocations.


Item

15:

Be

aware

of

variations

in

string

implementations.


Item

16:

Know

how

to

pass

vector

and

string

data

to

legacy

APIs.


Item

17:

Use

"the

swap

trick"

to

trim

excess

capacity.


Item

18:

Avoid

using

vector.




3.

Associative

Containers.



Item

19:

Understand

the

difference

between

equality

and

equivalence.


Item

20:

Specify

comparison

types

for

associative

containers

of

pointers.


Item

21:

Always

have

comparison

functions

return

false

for

equal

values.


Item

22:

Avoid

in-place

key

modification

in

set

and

multiset.


Item

23:

Consider

replacing

associative

containers

with

sorted

vectors.


Item

24:

Prefer

map::insert

to

map::operator

when

efficiency

is

a

concern.


Item

25:

Familiarize

yourself

with

the

nonstandard

hashed

containers.




4.

Iterators.



Item

26:

Prefer

iterator

to

const_iterator,

reverse_iterator,

and

const_reverse_iterator.


Item

27:

Use

distance

and

advance

to

convert

const_iterators

to

iterators.


Item

28:

Understand

how

to

use

a

reverse_iterator's

base

iterator.


Item

29:

Consider

istreambuf_iterators

for

character

by

character

input.




5.

Algorithms.



Item

30:

Make

sure

destination

ranges

are

big

enough.


Item

31:

Know

your

sorting

options.


Item

32:

Follow

remove-like

algorithms

by

erase

if

you

really

want

to

remove

something.


Item

33:

Be

wary

of

remove-like

algorithms

on

containers

of

pointers.


Item

34:

Note

which

algorithms

expect

sorted

ranges.


Item

35:

Implement

simple

case-insensitive

string

comparisons

via

mismatch

or

lexicographical_compare.


Item

36:

Use

not1

and

remove_copy_if

to

perform

a

copy_if.


Item

37:

Use

accumulate

or

for_each

to

summarize

sequences.




6.

Functors,

Functor

Classes,

Functions,

etc.



Item

38:

Design

functor

classes

for

pass-by-value.


Item

39:

Make

predicates

pure

functions.


Item

40:

Make

functor

classes

adaptable.


Item

41:

Understand

the

reasons

for

ptr_fun,

mem_fun,

and

mem_fun_ref.


Item

42:

Make

sure

less

means

operator<.




7.

Programming

with

the

STL.



Item

43:

Prefer

algorithm

calls

to

hand-written

loops.


Item

44:

Prefer

member

functions

to

algorithms

with

the

same

names.


Item

45:

Distinguish

among

count,

find,

binary_search,

lower_bound,

upper_bound,

and

equal_range.


Item

46:

Consider

function

objects

instead

of

functions

as

algorithm

parameters.


Item

47:

Avoid

producing

write-only

code.


Item

48:

Always

#include

the

proper

headers.


Item

49:

Learn

to

decipher

STL-related

compiler

diagnostics.


Item

50:

Familiarize

yourself

with

STL-related

web

sites

Bibliography

Appendix

A:Locales

and

Case-Insensitive

String

Comparisons

Appendix

B:Remarks

on

Microsoft's

STL

Platforms

Index