| | | 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 |