Log In
Join
 for free
Back To Course Home
C++ Fundamentals for Professionals
0% completed
Core Language
History
Literals
Literals
User-Defined Literals
C++14 Built-In Literals
Raw and Cooked
- Examples
- Exercises
- Solutions
Types
Scoped Enumerations
- Example
Pointers
Null Pointer
- Examples
References
Automatic Type Deduction
Automatic Type Deduction: auto
Refactorization with auto
- Examples
- Exercise
- Solution
Automatic Type Deduction: decltype
Automatic Return Type
- Example
- Exercise
- Solution
Casts
Explicit Cast
Dynamic Cast
Static Cast
Const Cast
Reinterpret Cast
Type Information
Unified Initialization
Unified Initialization with {}
- Examples
- Exercise
- Solution
const, constexpr, and volatile
Const
Constant Expressions: constexpr
- Examples
- Exercises
Volatile
Move Semantic and Perfect Forwarding
Rvalues and Lvalues
- Example
Copy vs. Move Semantics
Move Semantics
- Examples
- Exercises
- Solution
Perfect Forwarding
- Example
- Exercise
- Solution
Memory Management
Memory Allocation
Release of Memory
- Example
Overloading new and delete
Overloading new and delete: A Few Adjustments
Functions
Function Declarations
- Example
Function Overloading
Lambda Functions
- Examples
- Exercises
- Solution
Classes and Objects
Class Types
Constructors
More Kinds of Constructors
Initializers for Instances
- Exercise
- Solution
Constructor Delegation
Destructors
- Example
Methods
- Examples
Request and Suppress Methods
- Examples
- Exercise
- Solution
Operator Overloading
Explicit Conversion Operators
- Exercise
- Solution
Call Operator
- Example
- Exercise
- Solution
Access Rights for Members
- Example
Friend Declarations
Structs and Unions
Inheritance
Abstract Base Classes
Access Rights
- Examples
- Exercise
Constructor Inheriting
- Example
- Exercise
- Solution
Base Class Initializers
Destructor Calls
- Exercise
Virtual Methods
- Example
- Exercise
Override and Final
- Examples
- Exercise
- Solution
Multiple Inheritance
- Examples
Templates
Function Templates
- Examples
- Exercise
- Solution
Class Templates
- Examples
- Exercise
- Solution
Friends
- Examples
- Exercise
- Solution
Template Parameters
- Examples
- Exercise
- Solution
Dependent Names
- Example
Variadic Templates
- Examples
Template Arguments
- Examples
- Exercise
- Solution
Specialization
- Examples
- Exercise
- Solution
CRTP
- Examples
- Exercises
- Solutions
Utilities
std::bind and std::function
- Exercise
- Solution
std::pair
std::tuple
- Exercise
- Solution
Reference Wrappers
Type Traits
Type Traits: Categories and Transformations
- Examples
- Exercise
- Solution
Smart Pointers
Introduction
Unique Pointers
- Examples
Shared Pointers
- Examples
Weak Pointers
- Example
Cyclic References
- Example
- Exercise
- Solution
Performance Comparison
Passing Smart Pointers
1. Containers in General
Introduction
Create and Delete
Size
Access
Assign and Swap
Compare
1.1 Sequential Containers
Introduction
Arrays
- Exercise
- Solution
Vectors
- Exercise
- Solution
Deques
Lists
Forward Lists
- Exercise
1.2 Associative Containers in General
Introduction
Insertion and Deletion
1.2.1 Ordered Associative Containers
Overview
Keys and Values
The Comparison Criterion
Special Search Functions
Maps
- Exercise
1.2.2 Unordered Associative Containers
Overview
Keys and Values
Performance
The Hash Function
The Details
- Exercise
- Solution
1. Algorithms
Introduction
Conventions
for_each
- Exercise
- Solution
1.1 Non-Modifying Algorithms
Introduction
Search Elements
Counting Elements
Test Ranges
Compare Ranges
Search Ranges
1.2 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
1.3 More Algorithms
Partition
Sort
Binary Search
Merge Operation
Heaps
Minimum and Maximum
Permutations
Numeric
- Exercise
- Solution
Callables
Introduction
Functions and Function Objects
Lambda Functions
Iterators
Introduction
Categories
Iterator Creation
Useful Functions
Adaptors
Strings
Introduction
Create and Delete
Conversion Between C++ and C Strings
Size versus Capacity
Comparison and Concatenation
Element Access
Input and Output
Search
- Exercise
- Solution
Modifying Operations
Numeric Conversions
Regular Expressions
Introduction
Character Types
Regular Expression Objects
The Search Result
Match
Search
- Exercise
- Solution
Replace
- Exercise
- Solution
Format
Repeated Search
Input and Output
Introduction
String Streams
File Streams
- Exercise
- Solution
The State of the Stream
User-Defined Data Types
Hierarchy
iostream
Input and Output Functions
- Exercise
- Solution
Format Specifier
- Exercise
Threads
Introduction to 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
- Exercise
- Solution
Methods of Threads
Methods of Threads in Practice
Shared Data
Introduction to 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
- Exercise
- Solution
Thread-Safe Initialization
Thread-Safe Initialization: Constant Expressions
Thread-Safe Initialization: call_once and once_flag
- Exercise
- Solution
Thread-Safe Initialization - Static Variables with Block Scope
Tasks
Introduction to Tasks
Threads vs. Tasks
Introduction to std::async
async: Start Policy
async: Fire and Forget
- Exercise
- Solution
Introduction to std::packaged_task
- Exercise
- Solution
Introduction to Promises and Futures
- Exercise
- Solution
Promise and Future: Returning a Notification
Introduction to std::shared_future
Conclusion
Where to Go from Here?
- Solution
The solution to the exercise of the previous lesson.
Solution
#
Get hands-on with 1400+ tech skills courses.
Start Free Trial