Learn Advanced Modern C++
Last updated 7/2022
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 7.67 GB | Duration: 24h 2m
Last updated 7/2022
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 7.67 GB | Duration: 24h 2m
Take your knowledge of C++ to the next level!
What you'll learn
Know and understand all the important features of modern C++
Acquire a good knowledge of the Standard Template Library
Obtain a thorough grounding in the C++ programming language
Be familiar with idiomatic uses of modern C++
Requirements
Some knowledge of C++ beyond beginner level
A compiler which supports C++11, preferably C++14 or C++17
Proficiency in English (B2 level, preferably C1)
Description
This course will enhance your knowledge of the technically challenging but powerful and efficient C++ programming language.It is designed to give you an intermediate-to-advanced level understanding of the language. There is extensive coverage of the Standard Template Library, including standard algorithm functions. Finally, a project in which you will exercise your new skills by writing a simple game.After successfully completing this course, you should be able to apply for jobs and courses which require a good knowledge of C++.The material is based around the modern version of the language. I teach the C++11, C++14 and C++17 standards, but also cover older variations which are still widely used.The course is thorough and goes into the material in depth. It assumes basic C++ knowledge, such as the material in my course "Begin Programming with Modern C++": function calls, loops, conditionals and classes.There are downloadable exercises for each video, with solutions, so you can check your understanding as you learn, gaining familiarity and confidence with the material. I will be actively supporting the course and I will respond promptly if you have any questions or experience difficulties with the course content. Please feel free to use the Q&A feature or alternatively you can send me a private message.
Overview
Section 1: Introduction
Lecture 1 Introduction to the Course
Lecture 2 Lecturer Introduction
Lecture 3 Source Code for this Course
Section 2: Review of C++
Lecture 4 Local Variables and Function Arguments
Lecture 5 Reference and Value Semantics
Lecture 6 Declaration and Initialization
Lecture 7 Classes
Lecture 8 Special Member Functions
Lecture 9 Pointers and Memory
Lecture 10 Array, String and Vector
Lecture 11 Conway's Game of Life Overview
Lecture 12 Two-Dimensional Arrays
Lecture 13 Conway's Game of Life Practical
Lecture 14 Conway's Game of Life Practical Continued
Lecture 15 Numeric Types and Literals
Lecture 16 String Literals
Lecture 17 Casting
Lecture 18 Iterator Introduction
Lecture 19 The auto keyword
Lecture 20 Loops and Iterators
Lecture 21 Iterator Arithmetic and Iterator Ranges
Lecture 22 If Statements and Switch in C++17
Lecture 23 Templates Overview
Lecture 24 Namespaces
Lecture 25 Function Pointer
Section 3: C++ String Interface
Lecture 26 Basic String Operations
Lecture 27 Searching Strings
Lecture 28 Adding Elements to Strings
Lecture 29 Removing Elements from Strings
Lecture 30 Converting between Strings and Numbers
Lecture 31 Miscellaneous String Operations
Lecture 32 Character Functions
Section 4: Files and Streams
Lecture 33 Files and Streams
Lecture 34 File Streams
Lecture 35 Streams and Buffering
Lecture 36 Unbuffered Input and Output
Lecture 37 File Modes
Lecture 38 Stream Member Functions and State
Lecture 39 Stream Manipulators and Formatting
Lecture 40 Floating-point Output Formats
Lecture 41 Stringstreams
Lecture 42 Resource Management
Lecture 43 Random Access to Streams
Lecture 44 Stream Iterators
Lecture 45 Binary Files
Lecture 46 Binary File Practical
Section 5: Special Member Functions and Operator Overloading
Lecture 47 Constructors in Modern C++
Lecture 48 Copy Constructor Overview
Lecture 49 Assignment Operator Overview
Lecture 50 Synthesized Member Functions
Lecture 51 Shallow and Deep Copying
Lecture 52 Copy Elision
Lecture 53 Conversion Operators
Lecture 54 Default and Delete Keywords
Lecture 55 Operators and Overloading.
Lecture 56 Which Operators to Overload
Lecture 57 The Friend Keyword
Lecture 58 Member and Non-member Operators
Lecture 59 Addition Operators
Lecture 60 Equality and Inequality Operators
Lecture 61 Less-than Operator
Lecture 62 Prefix and Postfix Operators
Lecture 63 Function Call Operator
Lecture 64 Printing Out Class Member Data
Section 6: Algorithms Introduction and Lambda Expressions
Lecture 65 Algorithms Overview
Lecture 66 Algorithms with Predicates
Lecture 67 Algorithms with _if Versions
Lecture 68 Lambda Expressions Introduction
Lecture 69 Lambda Expressions Practical
Lecture 70 Lambda Expressions and Capture
Lecture 71 Lambda Expressions and Capture Continued
Lecture 72 Lambda Expressions and Partial Evaluation
Lecture 73 Lambda Expressions in C++14
Lecture 74 Pair Type
Lecture 75 Insert Iterators
Lecture 76 Library Function Objects
Section 7: Algorithms Continued
Lecture 77 Searching Algorithms
Lecture 78 Searching Algorithms Continued
Lecture 79 Numeric Algorithms
Lecture 80 Write-only Algorithms
Lecture 81 for_each Algorithm
Lecture 82 Copying Algorithms
Lecture 83 Write Algorithms
Lecture 84 Removing Algorithms
Lecture 85 Removing Algorithms Continued
Lecture 86 Transform Algorithm
Lecture 87 Merging Algorithms
Lecture 88 Reordering Algorithms
Lecture 89 Partitioning Algorithms
Lecture 90 Sorting Algorithms
Lecture 91 Sorting Algorithms Continued
Lecture 92 Permutation Algorithms
Lecture 93 Min and Max Algorithms
Lecture 94 Further Numeric Algorithms
Lecture 95 Further Numeric Algorithms Continued
Lecture 96 Introduction to Random Numbers
Lecture 97 Random Numbers in Older C++
Lecture 98 Random Numbers in Modern C++
Lecture 99 Random Number Algorithms
Lecture 100 Palindrome Checker Practical
Lecture 101 Random Walk Practical
Section 8: Containers
Lecture 102 Container Introduction
Lecture 103 Standard Library Array
Lecture 104 Forward List
Lecture 105 List
Lecture 106 List Operations
Lecture 107 Deque
Lecture 108 Tree Data Structure
Lecture 109 Sets
Lecture 110 Map
Lecture 111 Maps and Insertion
Lecture 112 Maps in C++17
Lecture 113 Multiset and Multimap
Lecture 114 Searching Multimaps
Lecture 115 Unordered Associative Containers
Lecture 116 Unordered Associative Containers Continued
Lecture 117 Associative Containers and Custom Types
Lecture 118 Nested Maps
Lecture 119 Queues
Lecture 120 Priority Queues
Lecture 121 Stack
Lecture 122 Emplacement
Lecture 123 Mastermind Game Practical
Lecture 124 Containers Workshop
Section 9: Inheritance and Polymorphism
Lecture 125 Class Hierarchies and Inheritance
Lecture 126 Base and Derived Classes
Lecture 127 Member Functions and Inheritance
Lecture 128 Overloading Member Functions
Lecture 129 Pointers, References and Inheritance
Lecture 130 Static and Dynamic Type
Lecture 131 Virtual Functions
Lecture 132 Virtual Functions in C++11
Lecture 133 Virtual Destructor
Lecture 134 Interfaces and Virtual Functions
Lecture 135 Virtual Function Implementation
Lecture 136 Polymorphism
Section 10: Error Handling and Exceptions
Lecture 137 Error Handling
Lecture 138 Error codes and Exceptions
Lecture 139 Exceptions Introduction
Lecture 140 Try and Catch Blocks
Lecture 141 Catch-all Handlers
Lecture 142 Exception Mechanism
Lecture 143 std::exception Hierarchy
Lecture 144 Standard Exception Subclasses
Lecture 145 Exceptions and Special Member Functions
Lecture 146 Custom Exception Class
Lecture 147 Exception Safety
Lecture 148 The throw() Exception Specifier
Lecture 149 The noexcept keyword
Lecture 150 Swap Function
Lecture 151 Exception-safe Class
Lecture 152 Copy and Swap
Lecture 153 Comparison with Java and C# Exceptions
Section 11: Move Semantics
Lecture 154 Move Semantics
Lecture 155 Lvalues and Rvalues
Lecture 156 Lvalue and Rvalue References
Lecture 157 Value Categories
Lecture 158 Move Operators
Lecture 159 RAII Class with Move Operators
Lecture 160 Move-only Types and RAII
Lecture 161 Special Member Functions in C++11
Lecture 162 Using Special Member Functions in C++11
Lecture 163 Function Arguments and Move Semantics
Lecture 164 Forwarding References
Lecture 165 Perfect Forwarding
Lecture 166 Perfect Forwarding Practical
Lecture 167 Move Semantics Workshop
Section 12: Smart Pointers
Lecture 168 Smart Pointers Introduction
Lecture 169 Unique Pointer
Lecture 170 Unique Pointers and Polymorphism
Lecture 171 Unique Pointers and Custom Deleters
Lecture 172 The Handle-Body Pattern
Lecture 173 The pImpl Idiom
Lecture 174 Reference Counting
Lecture 175 Shared pointer
Lecture 176 Weak Pointer
Lecture 177 Weak Pointer and Cycle Prevention
Section 13: Miscellaneous Features
Lecture 178 Chrono Library Introduction
Lecture 179 Chrono Duration Types
Lecture 180 Chrono Clocks and Time Points
Lecture 181 Bitsets
Lecture 182 Tuples
Lecture 183 Tuples in C++17
Lecture 184 Unions
Lecture 185 Unions Continued
Lecture 186 Mathematical Types
Lecture 187 Bind
Lecture 188 Callable Objects
Lecture 189 Member Function Pointers
Lecture 190 Interfacing to C
Lecture 191 Run-time Type Information
Lecture 192 Multiple Inheritance
Lecture 193 Virtual Inheritance
Lecture 194 Inline Namespaces
Lecture 195 Attributes
Section 14: Compile-time Programming
Lecture 196 Compile-time Programming Overview
Lecture 197 Constant Expressions
Lecture 198 Constexpr Functions
Lecture 199 Classes and Templates
Lecture 200 Template Specialization
Lecture 201 Extern Templates
Lecture 202 Variadic Templates
Lecture 203 Miscellaneous Template Features
Lecture 204 Library-defined Operators
Lecture 205 Constexpr If Statement
Lecture 206 Constexpr If Examples
Lecture 207 The decltype Keyword
Section 15: Project: A Breakout Game Using Modern C++ with SFML
Lecture 208 Project Breakout
Lecture 209 SFML Introduction
Lecture 210 Compiler Configuration for SFML
Lecture 211 Basic Window
Lecture 212 Random Walk Revisited
Lecture 213 Sprite
Lecture 214 Ball
Lecture 215 Bouncing Ball
Lecture 216 Paddle
Lecture 217 Moving Paddle
Lecture 218 Ball-Paddle Interaction
Lecture 219 Bricks
Lecture 220 Ball Interaction with Bricks
Lecture 221 Game Manager
Lecture 222 Entity Manager Overview
Lecture 223 Entity Manager and Object Creation
Lecture 224 Entity Manager and Object Operations
Lecture 225 Brick Strength
Lecture 226 More Features
Lecture 227 Conclusion
Section 16: Resources
Lecture 228 Recommended Books
Lecture 229 C++ "Cheat Sheet" Infographics
Lecture 230 The "Awesome C++ Frameworks and Libraries" Github
Lecture 231 The "Awesome Modern C++ Resources" Github
Programmers who have some knowledge of Intermediate C++ and want to learn more,C++ developers who wish to refresh and/or update their skills