C++ Standard Template Library Tips
Programming ....
|
|
Effective STL - C++ Standard Template Library Tips
|
|

Containers.
– Choose your containers with care.
– Beware the illusion of container independent code.
– Make copying cheap and correct for objects in containers.
– Call empty instead of checking size against zero.
– Prefer range member functions to their single element counterparts.
– Be alert for C++’ s most vexing parse.
– When using containers of newed pointers, remember to delete the pointers before the container is destroyed.
– Never create containers of auto_ptrs.
– Choose carefully among erasing options.
– Be aware of allocator conventions and restrictions.
– Understand the legitimate uses of custom allocators.
– Have realistic expectations about the thread safety of STL containers.
Vector and string.
– Prefer vector and string to dynamically allocated arrays.
– Use reserve to avoid unnecessary reallocations.
– Be aware of variations in string implementations.
– Know how to pass vector and string data to legacy APIs.
– Use “the swap trick” to trim excess capacity.
– Avoid using vector<BOOL>.
Associative Containers.
– Understand the difference between equality and equivalence.
– Specify comparison types for associative containers of pointers.
– Always have comparison functions return false for equal values.
– Avoid inplace key modification in set and multiset.
– Consider replacing associative containers with sorted vectors.
– Prefer map::insert to map::operator[] when efficiency is a concern
– Familiarize yourself with the nonstandard hashed containers.
Iterators.
– Prefer iterator to const_iterator, reverse_iterator, and const_reverse_iterator.
– Use distance and advance to convert const_iterators to iterators.
– Understand how to use a reverse_iterator’ s base iterator.
– Consider istreambuf_iterators for character by character input.
Algorithms.
– Make sure destination ranges are big enough.
– Know your sorting options.
– Follow remove like algorithms by erase if you really want to remove something.
– Be wary of remove like algorithms on containers of pointers.
– Note which algorithms expect sorted ranges.
– Implement simple case insensitive string comparisons via mismatch or lexicographical_compare.
– Use not1 and remove_copy_if to perform a copy_if.
– Use accumulate or for_each to summarize sequences.
Functors, Functor Classes, Functions, etc.
– Design functor classes for pass by value.
– Make predicates pure functions.
– Make functor classes adaptable.
– Understand the reasons for ptr_fun, mem_fun, and mem_fun_ref.
– Make sure less means operator<.
Programming with the STL
– Prefer algorithm calls to handwritten loops.
– Prefer member functions to algorithms with the same names.
– Distinguish among count, find, binary_search, lower_bound, upper_bound, and equal_range.
– Consider function objects instead of functions as algorithm parameters.
– Avoid producing write only code.
– Always #include the proper headers.
– Learn to decipher STL related compiler diagnostics.
– Familiarize yourself with STL related web sites

Prashant Mhatre
Make Money, Programming, Bollywood, Marathi
^_*