| ISBN | 出版时间 | 包装 | 开本 | 页数 | 字数 |
|---|---|---|---|---|---|
| 未知 | 暂无 | 暂无 | 未知 | 0 | 暂无 |
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