Expert C++ Become a Proficient Programmer by Learning Coding Best Practices with C++17 and C++20's Latest Features

Are you an experienced C++ developer eager to take your skills to the next level? This updated edition of Expert C++ is tailored to propel you toward your goals. This book takes you on a journey of building C++ applications while exploring advanced techniques beyond object-oriented programming. Alon...

Descripción completa

Detalles Bibliográficos
Autor principal: Hahn, Marcelo Guerra (-)
Otros Autores: Tigranyan, Araks, Asatryan, John, Grigoryan, Vardan, Wu, Shunguang
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham : Packt Publishing, Limited 2023.
Edición:2nd ed
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009764838406719
Tabla de Contenidos:
  • Cover
  • Title Page
  • Copyright and Credits
  • Contributors
  • About the reviewers
  • Table of Contents
  • Preface
  • Part 1: Under the Hood of C++ Programming
  • Chapter 1: Building C++ Applications
  • Technical requirements
  • Building C++ applications
  • Preprocessing
  • Compiling
  • Linking
  • Low-level programming with C++
  • Functions
  • Data and memory
  • Control flow
  • Details of OOP
  • Class relationships
  • Summary
  • Chapter 2: Beyond Object-Oriented Programming
  • Technical requirements
  • An introduction to OOP and the C++ object model
  • Understanding objects
  • Low-level details of objects
  • High-level details of objects
  • C++ object model
  • State
  • Identity
  • Behavior
  • Mimicking a class
  • Working with classes
  • Classes from a compiler perspective
  • Initialization and destruction
  • Copying objects
  • Moving objects
  • An lvalue reference
  • Rvalue references
  • Notes on operator overloading
  • Encapsulation and the public interface
  • Class relationships
  • Aggregation and composition
  • Under the hood of inheritance and polymorphism
  • Inheritance
  • Polymorphism
  • Virtual functions under the hood
  • Classical design patterns
  • The composite pattern
  • The decorator pattern
  • Design principles
  • The single responsibility principle
  • The open-closed principle
  • The Liskov substitution principle
  • The interface segregation principle
  • The dependency inversion principle
  • More UML in project design
  • The sequence diagram
  • Summary
  • Questions
  • Further reading
  • Chapter 3: Understanding and Designing Templates
  • Technical requirements
  • Motivation for using templates
  • Function templates
  • Syntax
  • Instantiation
  • Deduction
  • Specialization and overloading
  • Class templates
  • Syntax
  • Instantiation
  • Specialization
  • Understanding variadic templates
  • Syntax
  • Examples.
  • Exploring template parameters and arguments
  • Template parameters
  • Non-type template parameter
  • Type template parameter
  • Template template parameter
  • Template arguments
  • Traits
  • Type trait implementation
  • Optimizing algorithms using traits
  • TMP and its applications
  • Summary
  • Questions
  • Further reading
  • Chapter 4: Template Meta Programming
  • Technical requirements
  • Back to basics (compile-time programming with templates)
  • Compile-time evaluation using constexpr
  • Constant expression-specified constructors (constexpr)
  • SFINAE AND enable_if&lt
  • &gt
  • Argument substitution failure
  • Disabling templates with enable_if&lt
  • &gt
  • Type traits
  • isFundamental
  • isArithmetic
  • isScalar
  • isConst
  • isVolatile
  • isPolymorphic
  • isAbstract
  • is_signed
  • Summary
  • Questions
  • Chapter 5: Memory Management and Smart Pointers
  • Technical requirements
  • Understanding computer memory
  • Designing a memory storage device
  • Understanding computer memory from a higher-level perspective
  • An example of memory management
  • Using smart pointers
  • Leveraging the RAII idiom
  • std::unique_ptr
  • std::shared_ptr and std::weak_ptr
  • Garbage collection
  • Using allocators
  • Types of allocators
  • Summary
  • Questions
  • Part 2: Designing Robust and Efficient Applications
  • Chapter 6: Digging into Data Structures and Algorithms in STL
  • Technical requirements
  • Sequential data structures
  • STL containers
  • Iterating containers
  • Concepts and iterators
  • Understanding concepts
  • Using iterators in C++20
  • Node-based data structures
  • Graphs and trees
  • Trees
  • Graphs
  • Hash tables
  • Algorithms
  • Search algorithms
  • Sorting
  • Summary
  • Further reading
  • Questions
  • Chapter 7: Advanced Data Structures
  • Technical requirements
  • B-trees
  • Searching
  • Insertion
  • Deletion.
  • Implementation details of std::unordered_map
  • How std::unordered_map organizes element storing and how elements are inserted into or searched in std::unordered_map
  • Hash functions and strategies that are used to implement them
  • Digit selection
  • Folding
  • Using modulo
  • Collisions and how they are handled
  • Heaps and their applications
  • Advanced lists
  • Skip lists
  • XOR lists
  • Summary
  • Questions
  • Further reading
  • Chapter 8: Functional Programming
  • Technical requirements
  • Functional programming revealed
  • Using ranges
  • First-class and higher-order functions
  • Why use functional programming?
  • Principles of functional programming
  • Pure functions
  • Folding
  • Delving more deeply into recursion
  • Head recursion
  • Tail recursion
  • Metaprogramming in functional C++
  • Summary
  • Questions
  • Further reading
  • Chapter 9: Concurrency and Multithreading
  • Technical requirements
  • Understanding concurrency and multithreading
  • Processes
  • Threads
  • Working with threads
  • Waiting for threads
  • Using std::jthread
  • Passing arguments to the thread function
  • Managing threads and sharing data
  • Sharing data
  • Protecting shared data using a mutex
  • Avoiding deadlocks
  • Designing concurrent code
  • Introducing coroutines
  • Summary
  • Questions
  • Further reading
  • Chapter 10: Designing Concurrent Data Structures
  • Technical requirements
  • Thread safety
  • Lock-based concurrent data structures
  • A thread-safe singleton pattern
  • Synchronized counters
  • Concurrent stacks
  • Lock-free concurrent data structures
  • Using atomic types
  • Operations on atomic types
  • Lock-free stacks
  • A lock-free queue
  • A lock-free hashtable
  • A lock-free set
  • More operations on atomics
  • Summary
  • Questions
  • Further reading
  • Chapter 11: Designing World-Ready Applications
  • Technical requirements
  • Design patterns.
  • Singleton
  • Factory
  • Adapter
  • Composite
  • Observer
  • Command
  • Applying design patterns
  • The problem
  • Trade-offs
  • Systemwide impact
  • Users
  • Using domain-driven design
  • An example of a real-world project
  • Summary
  • Questions
  • Further reading
  • Chapter 12: Incorporating Design Patterns in C++ Applications
  • Technical requirements
  • Design patterns in game development
  • The singleton pattern
  • The factory pattern
  • The flyway pattern
  • Design patterns in data-intensive applications
  • The proxy pattern
  • The decorator pattern
  • The iterator pattern
  • Design patterns in enterprise applications
  • SOA
  • Summary
  • Questions
  • Further reading
  • Chapter 13: Networking and Security
  • Technical requirements
  • Introduction to networks, the OSI model, and network programming using sockets
  • The OSI model
  • Network applications under the hood
  • Programming network applications using sockets
  • Understanding network protocols
  • Designing an echo server
  • Securing applications
  • Securing network applications
  • Summary
  • Questions
  • Further reading
  • Chapter 14: Debugging and Testing
  • Technical requirements
  • Understanding the root cause of an issue
  • RCA overview
  • Prevention is better than cure - good coding behavior
  • The uninitialized variable problem
  • Side effects in compound expressions
  • Mixed signed and unsigned problems
  • Order of evaluation problem
  • Compile-time checking versus runtime checking
  • Avoiding memory leaks
  • Debugging programs
  • Tools for debugging a C/C++ program
  • GDB overview
  • Examples of GDB
  • Setting breakpoints and inspection variable values
  • Practical debugging strategies
  • Static and dynamic analysis
  • Static analysis
  • Dynamic analysis
  • Testing, TDD, and BDD
  • Unit testing
  • TDD
  • BDD
  • Summary
  • Further reading.
  • Chapter 15: Large-Scale Application Design
  • Technical requirements
  • The introduction of large-scale, cross-platform project organizing
  • Large-scale, cross-platform project organization in C++
  • A large-scale, cross-platform project in C++
  • Best practices and strategies for managing a large-scale, cross-platform project in C++
  • Horizontal and vertical scaling
  • Horizontal scaling
  • Vertical scaling
  • Scaling C++ applications
  • Horizontal scaling in C++
  • Vertical scaling in C++
  • Designing data-intensive applications
  • Data structure
  • Data processing
  • The main function
  • Summary
  • Questions
  • Further reading
  • Part 3: C++ in the AI World
  • Chapter 16: Understanding and Using C++ in Machine Learning Tasks
  • Technical requirements
  • Introduction to AI
  • Computer vision
  • NLP
  • Knowledge reasoning
  • ML
  • Understanding ML
  • Designing an algorithm that learns
  • Categories of ML
  • Applications of ML
  • Neural networks
  • Clustering
  • Regression analysis
  • C++ and ML
  • Summary
  • Questions
  • Further reading
  • Chapter 17: Using C++ in Data Science
  • Technical requirements
  • Introduction to data science
  • C++ example
  • Data capturing and manipulation
  • C++ example
  • Data cleansing and processing
  • C++ example
  • Applying machine learning algorithms
  • C++ example
  • Data visualization
  • C++ example
  • Summary
  • Questions
  • Further reading
  • Chapter 18: Designing and Implementing a Data Analysis Framework
  • Technical requirements
  • Using and processing statistical data types
  • C++ example
  • Working with tabular and rectangular data
  • C++ example
  • A complete ETL pipeline design strategy
  • C++ example
  • Summary
  • Questions
  • Further reading
  • Index
  • Other Books You May Enjoy.