- Hardcover: 1128 pages
- Publisher: Addison-Wesley Professional; 2 edition (April 9, 2012)
- Language: English
- ISBN-10: 0321623215
- ISBN-13: 978-0321623218
- Product Dimensions: 7.6 x 1.4 x 9.3 inches
- Shipping Weight: 3.7 pounds (View shipping rates and policies)
- Average Customer Review: 197 customer reviews
- Amazon Best Sellers Rank: #31,138 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
The C++ Standard Library: A Tutorial and Reference (2nd Edition) 2nd Edition
Use the Amazon App to scan ISBNs and compare prices.
"Children of Blood and Bone"
Tomi Adeyemi conjures a stunning world of dark magic and danger in her West African-inspired fantasy debut. Learn more
Frequently bought together
Customers who bought this item also bought
Customers who viewed this item also viewed
About the Author
Nicolai M. Josuttis is an independent technical consultant who designs mid-sized and large software systems for the telecommunication, traffic, finance, and manufacturing industries. A former member of the C++ Standard Committee library working group, he is well known in the programming community for his authoritative books. In addition to The C++ Standard Library, a worldwide best-seller since its first publication in 1999, his books include C++ Templates: The Complete Guide (with David Vandevoorde, Addison-Wesley, 2003) and SOA in Practice: The Art of Distributed System Design (O’Reilly Media, 2007).
Author interviews, book reviews, editors picks, and more. Read it now
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
The issue with the code is that the font used was not consistently mono-spaced and there were plethora of syntactically incorrect line-breaks. I had to lower my font size to the lowest possible setting and orient the layout horizontally to make the code less chore-some. The code images themselves were so small (although properly formatted A-style code) that I had to strain my eyes. There was no happy medium here: either deal with impractical formatting or ruin your eyesight on the code images. The tables and inline graphics were abysmally small graphics, much like the code pictures.
If I had to purchase this book again I would definitely have shelled out the extra money for the print version. I am satisfied with the content but not the formatting of the e-book version, and will be looking forward to an update to the e-book version.
Overall, it is a good book, very informative. The only problem I have with Kindle edition is that it has too many cross-referenced links. On many occasions I accidentally clicked such links when I simply tried to turn a page.
Regarding the subject of the book - STL. At some point I started taking notes from the book (direct quotes):
- A very useful thing that you can do with string iterators is to make all characters of a string lowercase or uppercase via a single statement.
- Note that restoring the original exception flags may cause exceptions: exceptions() throws an exception if a corresponding flag is set in the stream already.
- It is also possible to work with streams not throwing an exception. In this case, an exception is thrown if an error is detected.
- Violating this rule can lead to all kinds of strange effects <- you will find a lot of these throughout the book.
- In addition, file streams now have move and swap semantics providing a move constructor, a move assignment operator, and swap(). So you can pass a file stream as argument or return a file stream from a function. For example, if a file should be used longer than the scope in which it was created, you can return it as follows since C + + 11.
- To implement a stream buffer that buffers, the write buffer has to be initialized using the function setp().
- Since C + + 98, the C + + standard library has provided the class valarray for the processing of arrays of numeric values. ...
The valarray classes were not designed very well. In fact, nobody tried to determine whether the final specification worked. ... As a consequence, valarrays are rarely used.
While technically there is nothing wrong with the above quotes, I suggest C++ programmers to step back a bit and realize how bad they reflect on the state of the language in 2013. Keep in mind that the book has more that 1100 pages. This is not due to large number of features in the library, but because these features have so many caveats and hidden side effects.
Read Ch 2, scan Ch 3. Ch 4 can wait, page through, don't read Ch 5. Read Ch 6 and just note how iterators can be used in Ch 7. And you are done. This can be done in under 3 hours. Then use the rest of the book just as a reference as needed and you will be an STL user eventual expert.
After using STL, you will never go back -- it transforms C++ into a useful language rather than a memory management sink hole. Oh, then you will want to go on to the new proposed, but not yet accepted (as of March 2007) standard library extensions. For that, see "The C++ Standard Library Extensions" by Pete Becker The C++ Standard Library Extensions: A Tutorial and Reference
What do the extensions (sometimes known as "Boost" library) add that's missing in STL? Well, Hash functions (how could these have been left out?), tuples rather than just pairs. Pairs in STL allow you to treat items as a unit -- very useful for database and pattern recognition/association for example. Tuples extend this to lists of items. Pointers with reference counting -- Speed up your code by easily avoiding needless copying and have the memory auto delete when all references to it go away. Doesn't solve the problem of "fatal embraces" where references point to each other, but it helps a lot.
What's still missing? By now, decision trees are just so mature and useful that they ought to be built in along with statistical boosting, k-means and agglomerative clustering, K-D trees for nearest neighbor association. That is IMHO, data ought not only allow methods to be attached, but clustering and basic machine learning/prediction should just be built in and standard by now. The above routines are mature and a basis of much more advanced routines.