Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/redskittlefox/cpp-learning-resources

C++ Learning Resources
https://github.com/redskittlefox/cpp-learning-resources

best-parctices best-practices cpp cpp11 cpp14 cpp17 cpp20 learning learning-cplusplus programming-fundamentals video-tutorial

Last synced: 25 days ago
JSON representation

C++ Learning Resources

Awesome Lists containing this project

README

        

# About This Document

#### Usage
This document contains videos and articles about different aspects of C++ programming. The best way to learn from them is to try them out yourself, or in the case of a lecture, do private research and experiments regarding the topic.

#### Advanced topics
You should not proceed to the topics after [C++ STL](https://github.com/RedSkittleFox/cpp-learning-resources#c-stl) without knowing the basics of C++ (or completing at least one series from [Basics Of C++](https://github.com/RedSkittleFox/cpp-learning-resources#basics-of-c) category). The content following [C++ STL](https://github.com/RedSkittleFox/cpp-learning-resources#c-stl) isn't sorted by the difficulity, everything there is considered advanced C++. You should be able to understand most of it and apply it in your code after completing [Basics Of C++](https://github.com/RedSkittleFox/cpp-learning-resources#basics-of-c) category.

#### Purpose
This document is a collection of high quality c++ learning materials for both new and experienced c++ programmers.

#### Contributing
Create either an [issue](https://github.com/RedSkittleFox/cpp-learning-resources/issues) with title and link to the resource you would like to add to this document or create new branch, add some changes and create a pull request.

#### Comments and suggestions
Please leave your comments, thoughts and suggestions via [Issues](https://github.com/RedSkittleFox/cpp-learning-resources/issues).

# Table of Contents

* [Best learning resources for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#best-learning-resources-for-c)
* [Basics Of C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#basics-of-c)

* [C++ STL](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-stl)
* [STL Containers](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#stl-containers)
* [STL Algorithms](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#stl-algorithms)
* [STL Utilities](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#stl-utilities)
* [Advanced C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#advanced-c)
* [Constexpr](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#constexpr)
* [Functional](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#functional)
* [Time in C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#time-in-c)
* [Multithreading](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#multithreading)
* [Type Related Programming](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#type-related-programming)
* [Templates](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#templates)
* [Concepts](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#concepts)
* [Type deduction](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#type-deduction)
* [SFINAE - Substitution Failure Is Not An Error](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#sfinae---substitution-failure-is-not-an-error)
* [Meta-programming](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#meta-programming)
* [C++ Memory Management](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-memory-management)
* [Basics of memory management](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#basics-of-memory-management)
* [Garbage collection](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#garbage-collection)
* [Allocators](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#allocators)
* [C++ Aplication Design](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-application-design)
* [C++ Object Oriented Design](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-object-oriented-design)
* [C++ Design Patterns](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-design-patterns)
* [C++ Data Oriented Design](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-data-oriented-design)
* [C++ Programming Style](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-programming-style)
* [Generalities about C++ programming](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#generalities-about-c-programming)
* [Best practices for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#best-practices-for-c)
* [Programing Guidelines](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#programing-guidelines)
* [C++ Libraries](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#c-libraries)
* [Embeding different languages in C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#embeding-different-languages-in-c)
* [Custom container libraries for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#custom-container-libraries-for-c)
* [raphical interfaces for C++](https://github.com/RedSkittleFox/cpp-learning-resources/blob/master/README.md#graphical-interfaces-for-c)

# Learning sources

- [cppreference.com](https://en.cppreference.com/w/)

- [Code Blacksmith Youtube Channel](https://www.youtube.com/channel/UC1dkO571jGLzSJcsOE-ESZg)

- [CppCon Youtube Channel](https://www.youtube.com/user/CppCon)

- [isocpp.org](https://isocpp.org)

- [CppCoreGuidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)

- [ChiliTomatoNoodle Youtube Channel](https://www.youtube.com/c/ChiliTomatoNoodle)

# Basics Of C++
- [Beginner C++ Game Programming Tutorial Series](https://youtube.com/playlist?list=PLqCJpWy5FohcehaXlCIt8sVBHBFFRVWsx)
~ Video Tutorial Series by ChiliTomatoNoodle

- [C++ programming tutorial series](https://www.youtube.com/watch?v=SQHREey_Yuc&list=PLfVsf4Bjg79Cu5MYkyJ-u4SyQmMhFeC1C)
~ Video Tutorial Series by LearningLad

- [C++ advanced programming tutorial series](https://www.youtube.com/playlist?list=PLE28375D4AC946CC3)
~ Video Tutorial Series by Bo Qian

- [learncpp.com](https://www.learncpp.com/)

- [C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y)
~ Video Tutorial Series by freeCodeCamp.org

# C++ STL

### STL Containers

- [Reference for all STL Containers](https://en.cppreference.com/w/cpp/container)

- [STL Containers - Learn Modern C++](https://www.youtube.com/watch?v=fuI7UQ8dg1Q)
~ Video Tutorial by Code Blacksmith

- [How to write an STL compatible container](https://medium.com/@vgasparyan1995/how-to-write-an-stl-compatible-container-fc5b994462c6)
~ Article by Vanand Gasparyan

- [Writing your own STL container](https://stackoverflow.com/a/7759622/10266364)
~ Question answer by Mooing Duck

- [Why does the C++ STL not provide any “tree” containers?](https://stackoverflow.com/a/205985/10266364)
~ Question Answer by Martin York

- [Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step](https://www.youtube.com/watch?v=ncHmEUmJZf4)
~ CppCon 2017 Talk by Matt Kulukundis

- [Enough string_view to Hang Ourselves](https://youtu.be/xwP4YCP_0q0)
~ CppCon 2018 Talk by Victor Ciura

- [Customizing the Standard Containers](https://youtu.be/NyivAC3WE6g)
~ CppCon 2017 Talk by Marshall Clow

- [Implementing static_vector: How Hard Could it Be?](https://youtu.be/I8QJLGI0GOE)
~ CppCon 2021 Talk by David Stone

### STL Algorithms

- [105 STL Algorithms in Less Than an Hour](https://www.youtube.com/watch?v=bXkWuUe9V2I)
~ ACCU 2018 Talk by Jonathan Boccara

- [STL Algorithms - why you should use them, and how to write your own](https://www.youtube.com/watch?v=h4Jl1fk3MkQ)
~ CppCon 2016 Talk by Marshall Clow

- [STL Algorithms in Action](https://www.youtube.com/watch?v=eidEEmGLQcU)
~ CppCon 2016 Talk by Michael VanLoon

- [Writing Standard Library Compliant Data Structures and Algorithms](https://youtu.be/fChDijocVec)
~ CppCon 2018 Talk by Marc Gregoire

- [C++17 Parallel Algorithms](https://youtu.be/Ve8cHE9LNfk)
~ CppCon 2017 Talk by Dietmar Kühl

- [Fantastic Algorithms and Where To Find Them](https://youtu.be/YA-nB2wjVcI)
~ CppCon 2017 Talk by Nicholas Ormrod

### STL Utilities

- [tuple<>: What's New and How it Works](https://www.youtube.com/watch?v=JhgWFYfdIho)
~ CppCon 2016 Talk by Stephan T. Lavavej

- [How to Write Well-Behaved Value Wrappers](https://youtu.be/J4A2B9eexiw)
~ CppCon 2018 Talk by Simon Brand

- [Effective replacement of dynamic polymorphism with std::variant](https://youtu.be/gKbORJtnVu8)
~ CppCon 2018 Talk by Mateusz Pusz

# Advanced C++

### Constexpr

- [constexpr - Taking Constants to the Next Level](https://www.youtube.com/watch?v=4Vnd2I91s2c)
~ Video Tutorial by Code Blacksmith

- [constexpr: Introduction](https://www.youtube.com/watch?v=fZjYCQ8dzTc)
~ CppCon 2015 Talk by Scott Schurr

- [constexpr: Applications](https://www.youtube.com/watch?v=qO-9yiAOQqc)
~ CppCon 2015 Talk by Scott Schurr

### Functional

- [functional: What's New, And Proper Usage](https://www.youtube.com/watch?v=zt7ThwVfap0)
~ CppCon 2015 Talk by Stephan T. Lavavej

### Time in C++

- [A <chrono> Tutorial](https://www.youtube.com/watch?v=P32hvk8b13M)
~ CppCon 2016 Talk by Howard Hinnant

- [Benchmark Timer](https://www.youtube.com/watch?v=GV0JMHOpoEw)
~ Video Tutorial by Code Blacksmith

### Random

- [What C++ Programmers Need to Know about Header <random>](https://www.youtube.com/watch?v=6DPkyvkMkk8)
~ CppCon 2016 Talk by Walter E. Brown

### Multithreading

- [What do you mean "thread-safe"?](https://www.youtube.com/watch?v=s5PCh_FaMfM)
~ CppCon 2018 Talk by Geoffrey Romer

- [Thread Synchronization Primitives](https://www.youtube.com/watch?v=n5Pst7CY2vo)
~ Video Tutorial by Code Blacksmith

- [Thread Pool](https://www.youtube.com/watch?v=eWTGtp3HXiw)
~ Video Tutorial by Code Blacksmith

- [Multithreaded Logger](https://www.youtube.com/watch?v=STQ3hMCTh-w)
~ Video Tutorial by Code Blacksmith

- [Memory Barriers](https://www.youtube.com/watch?v=qlkMbxUbKfw)
~ Video Tutorial by Code Blacksmith

- Multithreading is the answer. What is the question? [Part 1](https://www.youtube.com/watch?v=GNw3RXr-VJk)
[Part 2](https://www.youtube.com/watch?v=sDLQWivf1-I)
~ CppCon 2017 Talk by Ansel Sermersheim

- [The Trap of std::async](https://www.youtube.com/watch?v=ad9wzKR7TAk)
~ Video Tutorial by Code Blacksmith

# Type related programming

### Templates

- [Templates in C++](https://www.youtube.com/watch?v=I-hZkUa9mIs)
~ Video Tutorial by TheChernoProject

- [Variadic Templates](https://www.youtube.com/watch?v=o1EvPhz6UNE)
~ Video Tutorial by Jason Turner

- [Variadic Templates in C++11 / C++14 - An Introduction](https://www.youtube.com/watch?v=R1G3P5SRXCw)
~ CppCon 2015 Talk by Peter Sommerlad

- [std::enable_if](https://en.cppreference.com/w/cpp/types/enable_if)

- [Using Template Magic to Automatically Generate Hybrid CPU/GPU-Code](https://youtu.be/Xd4NVV-Uy0I)
~ CppCon 2018 Talk by Elmar Westphal

- [C++ Templates Revised](https://youtu.be/ULX_VTkMvf8)
~ CppCon 2017 Talk by Nicolai Josuttis

- [C++ Template Programming](https://www.3dgep.com/beginning-cpp-template-programming/)
~ Article by Jeremiah

### Concepts

- [Concepts: The Future of Generic Programming (the future is here)](https://www.youtube.com/watch?v=HddFGPTAmtU)
~ CppCon 2018 Talk by Bjarne Stroustrup

- [Concepts in 60: Everything you need to know and nothing you don't](https://www.youtube.com/watch?v=ZeU6OPaGxwM)
~ CppCon 2018 Talk by Andrew Sutton

### Type deduction

- [Type Deduction and Why You Care](https://www.youtube.com/watch?v=wQxj20X-tIU)
~ CppCon 2014 Talk by Scott Meyers

- [Type Traits - what are they and why should I use them?](https://www.youtube.com/watch?v=VvbTP_k_Df4)
~ CppCon 2015 Talk by Marshall Clow

- [Template Type Deduction](https://youtu.be/ps4G4L5V7WA)
~ Video Tutorial by Code Blacksmith

- [Class Template Argument Deduction for Everyone](https://www.youtube.com/watch?v=-H-ut6j1BYU)
~ CppCon 2018 Talk by Stephan T. Lavavej

- [Type Punning in C++17: Avoiding Pun-defined Behavior](https://youtu.be/sCjZuvtJd-k)
~ CppCon 2017 Talk by Scott Shurr

### SFINAE - Substitution Failure Is Not An Error
- [SFINAE documentation](https://en.cppreference.com/w/cpp/language/sfinae)

- [SFINAE introduction](https://jguegant.github.io/blogs/tech/sfinae-introduction.html)

- [Check if type has a member method of given signature](https://stackoverflow.com/a/16824239/10266364)
~ Question Answer by jrok

- [Custom Overload Sets and Inline SFINAE for Truly Generic Interfaces](https://youtu.be/WBTNCYT20f0)
~ CppCon 2018 Talk by Vincent Reverdy

### Meta-programming

- [Introduction to C++ Template Metaprogramming](https://www.youtube.com/watch?v=lrziylOWBT4)
~ NDC Oslo 2016 Talk by Sasha Goldshtein

- [Modern Template Metaprogramming:A Compendium,Part 1](https://www.youtube.com/watch?v=Am2is2QCvxY)
~ CppCon 2014 Talk by Walter E.Brown Part 1

- [Modern Template Metaprogramming:A Compendium,Part 2](https://www.youtube.com/watch?v=a0FliKwcwXE)
~ CppCon 2014 Talk by Walter E.Brown Part 2

# C++ Memory Management

### Basics of memory management

- [Modern Memory Management](https://www.youtube.com/watch?v=vvgKqoKa8Mg)
~ Video Tutorial by Code Blacksmith

- [std::launder - what is it?](https://www.youtube.com/watch?v=BneDZVf1EMw)
~ Video Tutorial by Code Blacksmith

- [Move Semantics Explained](https://www.youtube.com/watch?v=ruHw7E71zBw)
~ Video Tutorial by Code Blacksmith

- [Copy and Swap](https://www.youtube.com/watch?v=10wKJgrjN9M)
~ Video Tutorial by Code Blacksmith

- [“Want fast C++? Know your hardware!"](https://www.youtube.com/watch?v=BP6NxVxDQIs)
~ Lecture by Timur Doumler ( CppCon 2017 )

### Garbage Collection

- [GC FAQ](https://www.iecc.com/gclist/GC-faq.html)
~ Document regarding garbage collection in C++

### Allocators

- [std::allocator Is to Allocation what std::vector Is to Vexation](https://www.youtube.com/watch?v=LIb3L4vKZ7U)
~ CppCon 2015 Talk by Andrei Alexandrescu

- [Custom Allocator Tutorial](https://www.youtube.com/watch?v=pP15kDeXJU0)
~ Video Tutorial by Code Blacksmith

- [How to Write a Custom Allocator](https://www.youtube.com/watch?v=kSWfushlvB8)
~ CppCon 2017 Talk by Bob Steagall

- [Efficient Object Pool](https://www.youtube.com/watch?v=37VhkrOiE8M)
~ Video Tutorial by Code Blacksmith

- [Local ('Arena') Memory Allocators (part 1)](https://www.youtube.com/watch?v=nZNd5FjSquk)
~ CppCon 2017 Talk by John Lakos

- [Local ('Arena') Memory Allocators (part 2)](https://www.youtube.com/watch?v=CFzuFNSpycI)
~ CppCon 2017 Talk by John Lakos

# C++ Error Handling

- [C++ Exception Handling](https://www.tutorialspoint.com/cplusplus/cpp_exceptions_handling)
~ Article on tutorialspoint.com

- [Exception Safety](https://www.youtube.com/watch?v=X4TNDFlXzOo)
~ Video Tutorial by Code Blacksmith

- [std::exception](https://en.cppreference.com/w/cpp/error/exception)

- [Custom C++ Exceptions for Beginners](http://peterforgacs.github.io/2017/06/25/Custom-C-Exceptions-For-Beginners/)
~ Article by Peter Forgacs

# C++ Application Design

-[Game Programming from Scratch in C++] (https://guide.handmadehero.org/)
~By Casey Muratori
- [C++ in Huge AAA Games](https://youtu.be/qYN6eduU06s)
~ CppCon 2014 Talk by Nicolas Fleury

- [The C++ Execution Model](https://youtu.be/FJIn1YhPJJc)
~ CppCon 2018 Talk by Adelstein Lelbach

- [Game engine using STD C++ 11](https://www.youtube.com/watch?v=8AjRD6mU96s)
~ CppCon 2016 Talk by Jason Jurecka

- [Modern User Interfaces for C++](https://www.youtube.com/watch?v=RXTfC-35Nx8)
~ CppCon 2015 Talk by Milian Wolff

- [EA’s Secret Weapon: Packages and Modules](https://youtu.be/NlyDUQS8OcQ)
~ CppCon 2017 Talk by Scott Wardle

- [Naivety of Creating Cross-Platform, Modern C++ Libraries...](https://youtu.be/JPdohAomZD8)
~ CppCon 2017 Talk by Jonathan Henson

- [Modern C++ API Design (part 1 of 2)](https://youtu.be/xTdeZ4MxbKo)
~ CppCon 2018 Talk by Titus Winters

- [Modern C++ API Design (part 2 of 2)](https://youtu.be/tn7oVNrPM8I)
~ CppCon 2018 Talk by Titus Winters

- [Better Code: Human Interface](https://youtu.be/0WlJEz2wb8Y)
~ CppCon 2018 Talk by Sean Parent

- [Modern C++ Interfaces...](https://youtu.be/PFdWqa68LmA)
~ CppCon 2017 Talk by Stephen Dewhurst

- [Building C++ Modules](https://youtu.be/E8EbDcLQAoc)
~ CppCon 2017 Talk by Boris Kolpackov

### C++ Object Oriented Design

- [Intro to the C++ Object Model](https://youtu.be/iLiDezv_Frk)
~ CppCon 2015 Talk by Richard Powell

- [Design Patterns and Modern C++](https://www.youtube.com/watch?v=j9arNRRoPe8)
~ Video Tutorial by JetBrainsTV

- [Multiple Inheritance problem in C++](https://www.youtube.com/watch?v=7APovvvftQs)
~ Video Tutorial by Bo Qian

- [Using Functional Programming Patterns...](https://youtu.be/nR2raX2-a0Q)
~ CppCon 2017 Talk by Jeremy Demeule & Quentin Duval <-

#### C++ Design Patterns

- [Singleton Design Pattern](https://www.youtube.com/watch?v=2SIpresDYVc)
~ Video Tutorial by Code Blacksmith

- [Strategy Design Pattern](https://www.youtube.com/watch?v=z84cggFUvCs)
~ Video Tutorial by Code Blacksmith

- [Builder Design Pattern](https://www.youtube.com/watch?v=s8S1X-p3TtI)
~ Video Tutorial by Code Blacksmith

- [Agent based class design](https://youtu.be/tNXyNa6kf4k)
~ CppCon 2017 Talk by Odin Holmes

- [Design Patterns for Low-Level Real-Time Rendering](https://youtu.be/mdPeXJ0eiGc)
~ CppCon 2017 Talk by Nicolas Guillemot <-

### C++ Data Oriented Design

- [Implementation of a component-based entity system in modern C++](https://youtu.be/NTWSeQtHZ9M)
~ CppCon 2015 Talk By Vittorio Romeo <-

- [Data Driven Entity Component System in C++17](https://www.youtube.com/watch?v=tONOW7Luln8)
~ Code Europe Autumn 2017 Talk K.Kisielewicz

- [OOP Is Dead, Long Live Data-oriented Design](https://www.youtube.com/watch?v=yy8jQgmhbAU)
~ CppCon 2018 Talk by Stoyan Nikolov

# C++ Programming Style

### Generalities about C++ programming

- [Make Classes Great Again! (Using Concepts for Customization Points)](https://www.youtube.com/watch?v=WsUnnYEKPnI)
~ CppCon 2017 Talk by Vinnie Falco

- [Operator Overloading: History, Principles and Practice](https://youtu.be/zh4EgO13Etg)
~ CppCom 2018 Talk by Ben Deane

- [How to Write Effective Documentation for C++ Libraries...](https://youtu.be/YxmdCxX9dMk)
~ CppCon 2017 Talk by Robert Ramey

- [Dynamically Loaded Libraries Outside the Standard](https://youtu.be/-dxCaM4GOqs)
~ CppCon 2021 Talk by Zhihao Yuan

### Best practices for C++

- [Readable C++](https://youtu.be/zUVQhcu32rg)
~ CppCon 2016 Talk by Timur Doumler <-

- [Building Software Capital: How to write the highest quality code and why](https://youtu.be/ta3S8CRN2TM)
~ CppCon 2016 Talk by David Sankel <-

- [Secure Coding Best Practices: Your First Line Is The Last Line Of Defense (1 of 2)](https://youtu.be/n4Yf2tBeAbE)
~ CppCon 2018 Talk by Matthew Butler <-

- [Secure Coding Best Practices: Your First Line Is The Last Line Of Defense (2 of 2)](https://youtu.be/i0m0FBD-McY)
~ CppCon 2018 Talk by Matthew Butler <-

- [Applied Best Practices](https://www.youtube.com/watch?v=DHOlsEd0eDE)
~ CppCon 2018 Talk by Jason Turner <-

- [Practical Performance Practices](https://www.youtube.com/watch?v=uzF4u9KgUWI)
~ CppCon 2016 Talk by Jason Turner <-

- [Writing Good C++14... By Default](https://www.youtube.com/watch?v=hEx5DNLWGgA)
~ CppCon 2015 Talk by Herb Sutter <-

- [Easy to Use, Hard to Misuse: Declarative Style in C++](https://www.youtube.com/watch?v=I52uPJSoAT4)
~ CppCon 2018 Talk Ben Deane <-

### Programing Guidelines

- [C++ `const` correctness guidelines](https://isocpp.org/wiki/faq/const-correctness)

- [CppCoreGuidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)

- [10 Core Guidelines You Need to Start Using Now](https://www.youtube.com/watch?time_continue=498&v=XkDEzfpdcSg)
~ CppCon 2017 Talk by Kate Gregory