| | Copyright |
| | Foreword |
| | Preface |
| | | What's "More?" |
| | | What I Assume You Know |
| | | How to Read This Book |
| | | Namespaces, Typename, References, and Other Conventions |
| | | Acknowledgments |
|
| | Generic Programming and the C++ Standard Library |
| | | Item 1. Switching Streams |
| | | Solution |
|
| | | Item 2. Predicates, Part 1: What remove() Removes |
| | | Solution |
|
| | | Item 3. Predicates, Part 2: Matters of State |
| | | Solution |
|
| | | Item 4. Extensible Templates: Via Inheritance or Traits? |
| | | Solution |
|
| | | Item 5. Typename |
| | | Solution |
|
| | | Item 6. Containers, Pointers, and Containers That Aren't |
| | | Solution |
|
| | | Item 7. Using vector and deque |
| | | Solution |
|
| | | Item 8. Using set and map |
| | | Solution |
|
| | | Item 9. Equivalent Code? |
| | | Solution |
|
| | | Item 10. Template Specialization and Overloading |
| | | Solution |
|
| | | Item 11. Mastermind |
| | | Simplified Rules Summary |
| | | Solution |
|
|
| | Optimization and Performance |
| | | Item 12. inline |
| | | Solution |
|
| | | Item 13. Lazy Optimization, Part 1: A Plain Old String |
| | | Solution |
|
| | | Item 14. Lazy Optimization, Part 2: Introducing Laziness |
| | | Solution |
|
| | | Item 15. Lazy Optimization, Part 3: Iterators and References |
| | | Solution |
|
| | | Item 16. Lazy Optimization, Part 4: Multithreaded Environments |
| | | Solution |
|
|
| | Exception Safety Issues and Techniques |
| | | Item 17. Constructor Failures, Part 1: Object Lifetimes |
| | | Solution |
|
| | | Item 18. Constructor Failures, Part 2: Absorption? |
| | | Solution |
|
| | | Item 19. Uncaught Exceptions |
| | | Solution |
|
| | | Item 20. An Unmanaged Pointer Problem, Part 1: Parameter Evaluation |
| | | Solution |
|
| | | Item 21. An Unmanaged Pointer Problem, Part 2: What About auto_ptr? |
| | | Solution |
|
| | | Item 22. Exception-Safe Class Design, Part 1: Copy Assignment |
| | | Solution |
|
| | | Item 23. Exception-Safe Class Design, Part 2: Inheritance |
| | | Solution |
|
|
| | Inheritance and Polymorphism |
| | | Item 24. Why Multiple Inheritance? |
| | | Solution |
|
| | | Item 25. Emulating Multiple Inheritance |
| | | Solution |
|
| | | Item 26. Multiple Inheritance and the Siamese Twin Problem |
| | | Solution |
|
| | | Item 27. (Im)pure Virtual Functions |
| | | Solution |
|
| | | Item 28. Controlled Polymorphism |
| | | Solution |
|
|
| | Memory and Resource Management |
| | | Item 29. Using auto_ptr |
| | | Solution |
|
| | | Item 30. Smart Pointer Members, Part 1: A Problem with auto_ptr |
| | | Solution |
|
| | | Item 31. Smart Pointer Members, Part 2: Toward a ValuePtr |
| | | Solution |
|
|
| | Free Functions and Macros |
| | | Item 32. Recursive Declarations |
| | | Solution |
|
| | | Item 33. Simulating Nested Functions |
| | | Solution |
|
| | | Item 34. Preprocessor Macros |
| | | Solution |
|
| | | Item 35. #Definition |
| | | Solution |
|
|
| | Miscellaneous Topics |
| | | Item 36. Initialization |
| | | Solution |
|
| | | Item 37. Forward Declarations |
| | | Solution |
|
| | | Item 38. Typedef |
| | | Solution |
|
| | | Item 39. Namespaces, Part 1: Using-Declarations and Using-Directives |
| | | Solution |
|
| | | Item 40. Namespaces, Part 2: Migrating to Namespaces |
| | | Solution |
|
|
| | Afterword |
| | Appendix A. Optimizations That Aren't (in a Multithreaded World) |
| | | Introduction |
| | | What's the Fuss About? |
| | | Recap: Plain Old Original:: String (Item 13) |
| | | Using a Plain Old String: Single-Threaded |
| | | Using a Plain Old String: Multithreaded |
| | | Now Throw in an "Optimization": Copy-On-Write (COW) |
| | | Using a COW String: Multithreaded |
| | | Mild versus Severe Inefficiencies |
| | | Some Actual Numbers |
| | | A Real-World Example: C++'s basic_string |
| | | "Am I Affected?" |
| | | Summary |
|
| | Appendix B. Test Results for Single-Threaded versus Multithread-Safe String Implementations |
| | | Approach |
| | | Raw Measurements |
| | | Test Harness |
|
| | Bibliography |