Description
In this course, you will learn :
- New material with material from my other C++ courses to provide you with all of the most important information in one place.
- Everything you need to know to become a professional C++ programmer, including the current C++17 standard. Memory management, inheritance, templates, vectors, threads, tasks, and other topics will be covered.
Syllabus :
1. Core Language
- History
2. Literals
- Literals
- User-Defined Literals
- C++14 Built-In Literals
- Raw and Cooked
3. Types
- Scoped Enumerations
- Pointers
- Null Pointer
- References
4. Automatic Type Deduction
- Automatic Type Deduction: auto
- Refactorization with auto
- Automatic Type Deduction: decltype
- Automatic Return Type
5. Casts
- Explicit Cast
- Dynamic Cast
- Static Cast
- Const Cast
- Reinterpret Cast
- Type Information
6. Unified Initialization
- Unified Initialization with {}
- Solution
7. const, constexpr, and volatile
- Const
- Constant Expressions: constexpr
- Volatile
8. Move Semantic and Perfect Forwarding
- Rvalues and Lvalues
- Copy vs. Move Semantics
- Move Semantics
- Perfect Forwarding
9. Memory Management
- Memory Allocation
- Release of Memory
- Overloading new and delete
- Overloading new and delete: A Few Adjustments
10. Functions
- Function Declarations
- Function Overloading
- Lambda Functions
11. Classes and Objects
- Class Types
- Constructors
- More Kinds of Constructors
- Initializers for Instances
- Constructor Delegation
- Destructors
- Methods
- Request and Suppress Methods
- Operator Overloading
- Explicit Conversion Operators
- Call Operator
- Access Rights for Members
- Friend Declarations
- Structs and Unions
12. Inheritance
- Abstract Base Classes
- Access Rights
- Constructor Inheriting
- Base Class Initializers
- Destructor Calls
- Virtual Methods
- Override and Final
- Multiple Inheritance
13. Templates
- Function Templates
- Class Templates
- Friends
- Template Parameters
- Dependent Names
- Variadic Templates
- Template Arguments
- Specialization
- CRTP
14. Utilities
- std::bind and std::function
- std::pair
- std::tuple
- Reference Wrappers
- Type Traits
- Type Traits: Categories and Transformations
15. Smart Pointers
- Unique Pointers
- Shared Pointers
- Weak Pointers
- Cyclic References
- Performance Comparison
- Passing Smart Pointers
16. Containers in General
- Create and Delete
- Size
- Access
- Assign and Swap
- Compare
17. Sequential Containers
- Arrays
- Vectors
- Deques
- Lists
- Forward Lists
18. Associative Containers in General
- Introduction
- Insertion and Deletion
19. Ordered Associative Containers
- Keys and Values
- The Comparison Criterion
- Special Search Functions
- Maps
20. Unordered Associative Containers
- Keys and Values
- Performance
- The Hash Function
- The Details
21. Algorithms
- Conventions
- for_each
22. Non-Modifying Algorithms
- Search Elements
- Counting Elements
- Test Ranges
- Compare Ranges
- Search Ranges
23. Modifying Algorithms
- Copy Elements and Ranges
- Replace Elements and Ranges
- Remove Elements and Ranges
- Fill and Generate Ranges
- Move Ranges
- Swap Ranges
- Transform Ranges
- Reverse Ranges
- Rotate Ranges
- Shuffle Ranges
- Remove Duplicates
24. More Algorithms
- Partition
- Sort
- Binary Search
- Merge Operation
- Heaps
- Minimum and Maximum
- Permutations
- Numeric
25. Callables
- Functions and Function Objects
- Lambda Functions
26. Iterators
- Categories
- Iterator Creation
- Useful Functions
- Adaptors
27. Strings
- Create and Delete
- Conversion Between C++ and C Strings
- Size versus Capacity
- Comparison and Concatenation
- Element Access
- Input and Output
- Search
- Modifying Operations
- Numeric Conversions
28. Regular Expressions
- Character Types
- Regular Expression Objects
- The Search Result
- Match
- Search
- Replace
- Format
- Repeated Search
29. Input and Output
- String Streams
- File Streams
- The State of the Stream
- User-Defined Data Types
- Hierarchy
- iostream
- Input and Output Functions
- Format Specifier
30. Threads
- Creation of Threads
- Managing Thread Lifetime
- Thread Lifetime Management: Warnings and Tips
- Passing Arguments to Threads
- Arguments of Threads: Undefined Behavior
- Arguments of Threads: Race Conditions and Locks
- Methods of Threads
- Methods of Threads in Practice
31. Shared Data
- Introduction to Mutexes
- Mutex Types and Locking Methods
- Issues of Mutexes: Deadlocks
- Issues of Mutexes: Avoiding Exceptions
- Types of Locks: std::lock_guard
- Types of Locks: std::unique_lock
- Types of Locks: std::shared_lock
- Thread-Safe Initialization
- Thread-Safe Initialization: Constant Expressions
- Thread-Safe Initialization: call_once and once_flag
- Thread-Safe Initialization - Static Variables with Block Scope
32. Tasks
- Introduction to Tasks
- Threads vs. Tasks
- Introduction to std::async
- async: Start Policy
- async: Fire and Forget
- Introduction to std::packaged_task
- Introduction to Promises and Futures
- Promise and Future: Returning a Notification
- Introduction to std::shared_future