Mastering C++ Standard Library Features
4.3 (365 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
2,652 students enrolled

Mastering C++ Standard Library Features

Harness the power of the C++ STL and make full use of its components
4.3 (365 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
2,652 students enrolled
Created by Packt Publishing
Last updated 1/2018
English
English [Auto]
Current price: $86.99 Original price: $124.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 6 hours on-demand video
  • 1 downloadable resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Analyze and demystify some major new features such as move semantics, variadic templates, and lambdas
  • Learn about new core language features and the problems they were intended to solve
  • Discover new techniques that allow computations to be performed at compile-time
  • Create safer and more convenient interfaces, without any extra hidden cost
  • Improve your code by replacing new/delete with smart pointers
  • Get well versed with the C++ STL and make full use of its components
Course content
Expand all 28 lectures 06:12:38
+ Value Categories and Move Semantics
6 lectures 54:54

This video provides an overview of the entire course.

Preview 03:43

Understand the difference between lvalue and rvalues, gaining a solid theoretical base required to understand move semantics

Lvalues and Rvalues
10:17

Understand what move semantics are and how they enable efficient resource transfer and ownership transfer

Move Semantics
10:14

Learn about practical usages of std::move that can make your code more efficient

Practical Uses of std::move
16:23

Learn about the more fine-grained value categories of the language, in order to increase your understanding of the rules that guide move semantics

Value Categories: The Full Picture
04:47

Understand how to decrease boilerplate code and increase the flexibility of your interfaces by using perfect forwarding

Perfect Forwarding
09:30

Now that you are done with the videos of section 1, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test your Knowledge
8 questions
+ Smart pointers
4 lectures 01:00:05

Understand what the risks of manual memory management are and how smart pointers prevent them

Preview 06:00

Overview of std::unique_ptr and its basic interface, understand how unique_ptr works and what problem it solves

std::unique_ptr
21:31

Overview of std::shared_ptr and std::weak_ptr, understand how they work and the type of ownership they model

std::shared_ptr and std::weak_ptr
23:00

Learn how to choose between raw/unique/shared/weak pointers in your interfaces and implementation, understanding their pro/cons and “conventional” meanings

Smart Pointers: Guidelines
09:34

Now that you are done with the videos of section 2, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test your Knowledge
8 questions
+ Creating Movable Classes
3 lectures 42:28

Understand the benefits of writing movable classes in relation to facilities provided by the Standard Library

Preview 21:37

Learn rules that can guide developers to write correct and complete movable classes

Rule of Five and Rule of Zero
10:39

Step-by-step implementation of an `std::vector` clone that uses move semantics and is move-aware

Example: Implemeting std::vector
10:12

Now that you are done with the videos of section 3, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test your Knowledge
3 questions
+ Discover Lambdas
3 lectures 30:52

Understand what lambda expressions are and what problem they solve

Preview 06:49

Learn how lambda expressions work and what the compiler generates under the hood

Lambdas: Function Objects in Disguise
06:06

In-depth analysis of lambda expression syntax from C++11 to C++17

Anatomy of a Lambda
17:57

Now that you are done with the videos of section 4, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test your Knowledge
5 questions
+ Lambdas as First-Class Citizens
3 lectures 01:05:41

Understand the versatility of lambdas and unconventional problems solved by them

Preview 14:50

Learn how to store arbitrary closures and callable objects, and the `FunctionObject` and `Callable` concept definitions

Storing Callable Objects
24:24

Learn about higher-order functions and the problems solved by them, techniques to pass functions to other functions

Passing Functions to Functions
26:27

Now that you are done with the videos of section 5, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test Your Knowledge
4 questions
+ Mastering Lambdas
3 lectures 40:29

Understand how lambdas and the Standard Library interact and benefit from each other

Preview 17:17

Learn how and when to use lambdas as short local functions, in order to reduce repetition and increase maintainability

Lambdas as Local Functions
10:06

Through realistic examples, understand how higher-order functions can be used to create safer and easier interfaces for your users

Safer Interfaces with Higher-Order Functions
13:06

Now that you are done with the videos of section 6, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test Your Knowledge
5 questions
+ Programming at Compile-Time
3 lectures 37:01

Understand what a “constant expression” is and how `constexpr` allows to create functions that can be executed at compile-time

Preview 20:03

Learn about `constexpr` features in the Standard Library introduced throughout C++11/14/17, and upcoming C++20 features

`constexpr` in the Standard Library
11:46

Understand the interactions between exceptions and compile-time evaluation of `constexpr` functions

Exceptions in `constexpr` Functions
05:12

Now that you are done with the videos of section 7, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test Your Knowledge
6 questions
+ Computations on Types
3 lectures 41:08

Understand what a “metafunction” is and how types can be manipulated through templates

Preview 12:05

Learn about the most important features from the `` and `` headers

Metaprogramming Utilities in the Standard Library
20:02

Learn how to create a simple set-like compile-time data structure with a familiar `constexpr`-based syntax

Example: Creating a Compile-Time Set Data Structure
09:01

Now that you are done with the videos of section 8, let’s assess your learning. Here, are a few questions, followed by options, out of which one is correct. Select the right option and validate your learning! The answers are provided in a separate sheet

Test Your Knowledge
6 questions
Requirements
  • Prior C++ knowledge is assumed
Description

C++ has come a long way and has now been adopted in several contexts with the latest updates of the STL and with C++17 on its way.

This video course will take you through C++'s Standard library and the most important features of C++11/14/17. You will begin with new language features and will gradually move on to library components and then to the traps and pitfalls and ways to avoid them. You will learn about STL components such as <utility>, smart pointers, `std::function`, `std::move`, and `std::exchange`, while at the same time reinforcing and deepening your understanding of the new language features. From here, you will learn to examine containers, iterators, function objects, with STL algorithms and lambda expressions. You will also be introduced to some upcoming C++17 additions including language features such as `constexpr` lambdas, and library additions such as the new algebraic data types and metaprogramming utilities. Throughout the course, you will learn the common pitfalls in "old" C++ programming and best practices for software development in Modern C++.

By the end of the course, you will have mastered Modern C++'s most impactful language and library features.

About the Author :

Vittorio Romeo

Vittorio has been a C++ enthusiast from a young age, with a BS in Computer Science from the Università degli Studi di Messina, and now works at Bloomerg LP. While following the evolution of the C++ standard and embracing the newest features, he worked on several open-source projects, including modern general-purpose libraries and free cross-platform indie games. Vittorio is an active member of the C++ community, speaking at many conferences and events. He currently maintains a YouTube channel featuring well-received Modern C++11 and C++14 tutorials. When he's not writing code, Vittorio enjoys weightlifting and fitness-related activities, competitive/challenging computer gaming, and good sci-fi movies/TV-series.  

Who this course is for:
  • This video course is targeted at developers who would like to master Modern C++ language and library features.