Get familiar with C++ history, evolution, and its core features in programming.
Look at literals in C++, including user-defined types, practical examples, and exercises.
Examine scoped enumerations, pointers, null pointer, and references in C++.
4.
Automatic Type Deduction
10 Lessons
Enhance your skills in automatic type deduction, `auto` and `decltype`, and return type inference.
Dig into explicit casting operators, dynamic casting, static casting, const and reinterpret casting in C++.
6.
Unified Initialization
4 Lessons
Tackle unified initialization in C++ with {}, examples, and exercises on standard containers.
Unified Initialization with {}- Examples- Exercise- Solution7.
const, constexpr, and volatile
5 Lessons
Build on using `const`, `constexpr`, and `volatile` for efficient, safe, and adaptable C++ code.
ConstConstant Expressions: constexpr- Examples- ExercisesVolatile8.
Move Semantic and Perfect Forwarding
11 Lessons
Sharpen your skills in C++ move semantics, copy vs. move, and perfect forwarding.
Rvalues and Lvalues- ExampleCopy vs. Move SemanticsMove Semantics- Examples- Exercises- SolutionPerfect Forwarding- Example- Exercise- Solution9.
Memory Management
5 Lessons
Look at explicit memory management, RAII principles, and overloading new/delete in C++.
Memory AllocationRelease of Memory- ExampleOverloading new and deleteOverloading new and delete: A Few AdjustmentsMaster the steps to function declarations, overloading, and lambda functions in C++.
Function Declarations- ExampleFunction OverloadingLambda Functions- Examples- Exercises- Solution11.
Classes and Objects
27 Lessons
Grasp the fundamentals of creating and managing classes and objects in C++.
Class TypesConstructorsMore Kinds of ConstructorsInitializers for Instances- Exercise- SolutionConstructor DelegationDestructors- ExampleMethods- ExamplesRequest and Suppress Methods- Examples- Exercise- SolutionOperator OverloadingExplicit Conversion Operators- Exercise- SolutionCall Operator- Example- Exercise- SolutionAccess Rights for Members- ExampleFriend DeclarationsStructs and UnionsExplore inheritance, abstract base classes, access rights, constructor inheritance, virtual methods, and multiple inheritance in C++.
Abstract Base ClassesAccess Rights- Examples- ExerciseConstructor Inheriting- Example- Exercise- SolutionBase Class InitializersDestructor Calls- ExerciseVirtual Methods- Example- ExerciseOverride and Final- Examples- Exercise- SolutionMultiple Inheritance- ExamplesFocus on C++ templates for functions, classes, parameters, specialization, and CRTP, enhancing flexibility and code reuse.
Function Templates- Examples- Exercise- SolutionClass Templates- Examples- Exercise- SolutionFriends- Examples- Exercise- SolutionTemplate Parameters- Examples- Exercise- SolutionDependent Names- ExampleVariadic Templates- ExamplesTemplate Arguments- Examples- Exercise- SolutionSpecialization- Examples- Exercise- SolutionCRTP- Examples- Exercises- SolutionsBuild on C++ utilities covering std::bind, lambda, pairs, tuples, reference wrappers, and type traits.
std::bind and std::function- Exercise- Solutionstd::pairstd::tuple- Exercise- SolutionReference WrappersType TraitsType Traits: Categories and Transformations- Examples- Exercise- SolutionLearn how to use smart pointers in C++ for efficient memory management and resource handling.
IntroductionUnique Pointers- ExamplesShared Pointers- ExamplesWeak Pointers- ExampleCyclic References- Example- Exercise- SolutionPerformance ComparisonPassing Smart Pointers16.
1. Containers in General
6 Lessons
Look at container operations: creation, size determination, element access, assignment, and comparison in C++.
IntroductionCreate and DeleteSizeAccessAssign and SwapCompare17.
1.1 Sequential Containers
11 Lessons
Examine C++ sequential containers, their functionalities, advantages, and efficient memory usage.
IntroductionArrays- Exercise- SolutionVectors- Exercise- SolutionDequesListsForward Lists- Exercise18.
1.2 Associative Containers in General
2 Lessons
Grasp the fundamentals of C++ associative containers, including insertion and deletion mechanisms.
IntroductionInsertion and Deletion19.
1.2.1 Ordered Associative Containers
6 Lessons
Take a closer look at C++ ordered associative containers, their keys, comparison criteria, and special search functions.
OverviewKeys and ValuesThe Comparison CriterionSpecial Search FunctionsMaps- Exercise20.
1.2.2 Unordered Associative Containers
7 Lessons
See how unordered associative containers enhance performance using hash functions in C++.
OverviewKeys and ValuesPerformanceThe Hash FunctionThe Details- Exercise- SolutionApproach using STL algorithms and conventions to efficiently manipulate container elements.
IntroductionConventionsfor_each- Exercise- Solution22.
1.1 Non-Modifying Algorithms
6 Lessons
Step through non-modifying algorithms for searching, counting, testing, and comparing ranges in C++.
IntroductionSearch ElementsCounting ElementsTest RangesCompare RangesSearch Ranges23.
1.2 Modifying Algorithms
11 Lessons
Unpack the core of modifying algorithms to copy, replace, remove, fill, generate, move, swap, transform, reverse, rotate, shuffle, and remove duplicates.
Copy Elements and RangesReplace Elements and RangesRemove Elements and RangesFill and Generate RangesMove RangesSwap RangesTransform RangesReverse RangesRotate RangesShuffle RangesRemove Duplicates24.
1.3 More Algorithms
10 Lessons
Break apart advanced algorithms for sorting, searching, merging, and numeric operations in C++.
PartitionSortBinary SearchMerge OperationHeapsMinimum and MaximumPermutationsNumeric- Exercise- SolutionGrasp the fundamentals of callables in C++, including functions, function objects, and lambda functions.
IntroductionFunctions and Function ObjectsLambda FunctionsSolve problems in C++ using iterators for efficient container navigation and modification.
IntroductionCategoriesIterator CreationUseful FunctionsAdaptorsSee how it works with creating, manipulating, and efficiently managing C++ string operations.
IntroductionCreate and DeleteConversion Between C++ and C StringsSize versus CapacityComparison and ConcatenationElement AccessInput and OutputSearch- Exercise- SolutionModifying OperationsNumeric Conversions28.
Regular Expressions
13 Lessons
Master regular expressions in C++ for text processing, pattern matching, replacing, and formatting.
IntroductionCharacter TypesRegular Expression ObjectsThe Search ResultMatchSearch- Exercise- SolutionReplace- Exercise- SolutionFormatRepeated Search29.
Input and Output
14 Lessons
Learn how to use C++ streams for efficient I/O, file handling, and data formatting.
IntroductionString StreamsFile Streams- Exercise- SolutionThe State of the StreamUser-Defined Data TypesHierarchyiostreamInput and Output Functions- Exercise- SolutionFormat Specifier- ExerciseDiscover the logic behind C++ threading, from creation to managing thread lifetimes and synchronization.
Introduction to ThreadsCreation of ThreadsManaging Thread LifetimeThread Lifetime Management: Warnings and TipsPassing Arguments to ThreadsArguments of Threads: Undefined BehaviorArguments of Threads: Race Conditions and Locks- Exercise- SolutionMethods of ThreadsMethods of Threads in PracticeMaster the steps to handle shared data, mutexes, locks, and thread-safe initialization in C++.
Introduction to Shared DataIntroduction to MutexesMutex Types and Locking MethodsIssues of Mutexes: DeadlocksIssues of Mutexes: Avoiding ExceptionsTypes of Locks: std::lock_guardTypes of Locks: std::unique_lockTypes of Locks: std::shared_lock- Exercise- SolutionThread-Safe InitializationThread-Safe Initialization: Constant ExpressionsThread-Safe Initialization: call_once and once_flag- Exercise- SolutionThread-Safe Initialization - Static Variables with Block ScopeEnhance your skills in asynchronous tasks, std::async, std::packaged_task, promises, and futures.
Introduction to TasksThreads vs. TasksIntroduction to std::asyncasync: Start Policyasync: Fire and Forget- Exercise- SolutionIntroduction to std::packaged_task- Exercise- SolutionIntroduction to Promises and Futures- Exercise- SolutionPromise and Future: Returning a NotificationIntroduction to std::shared_futureUnderstand how modern C++ advancements benefit embedded, server, gaming, and trading systems.
Where to Go from Here?