# Awesome C/C++ Learning Resources | Everything That You Need 💯

**URL:** <https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036>\
**Category:** Give-Away and Freebies\
**Tags:** freebies\
**Created:** [June 9, 2020, 12:56pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036 "2020-06-09T12:56:03Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aina](https://onehack.st/user_avatar/onehack.st/aina/32/167469_2.png) [@Aina](https://onehack.st/u/Aina)\
**Post date:** [June 9, 2020, 12:56pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/1 "2020-06-09T12:56:04Z")

</div>

![](https://i.imgur.com/MXA6OOA.png)

# C++ Learning Resources

#### Usage

This document contains videos and articles about different aspects of C++ programming. Best way to learn from them is to try them yourself, or in case of a lecture, read some more about this topic in C++ documentation.

#### 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 that and apply it in real world after compeling [Basics Of C++](https://github.com/RedSkittleFox/cpp-learning-resources#basics-of-c) category.

#### Purpose

This place is mostly targeted for people with basic C++ and STL knowledge. It’s supposed to improve your code’s readibility, performance and make your code more compact by using STL features.

#### 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)

# Best learning resources for C++

- [cppreference.com](https://en.cppreference.com/w/)
- [TheChernoProject YouTube Channel](https://www.youtube.com/user/TheChernoProject)
- [Code Blacksmith Youtube Channel](https://www.youtube.com/channel/UC1dkO571jGLzSJcsOE-ESZg)
- [CppCon Youtube Channel](https://www.youtube.com/user/CppCon)

# Basics Of C++

- [C++ programming tutorial series](https://www.youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb) ~ Video Tutorial Series by TheChernoProject
- [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](http://freeCodeCamp.org)
- [isocpp.org](https://isocpp.org/)
- [CppCoreGuidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)

# 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

### 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
- [std::optional](https://www.youtube.com/watch?v=PiaZkNp_fIM) ~ Video Tutorial by Jason Turner
- [std::any](https://www.youtube.com/watch?v=vLhr_y4YOIY) ~ Video Tutorial by Jason Turner
- [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 ← 

### 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 ← 

# 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
- [C++ Alignment, Cache Line and Best Practice](https://youtu.be/gonq59MxxcM) ~ Lecture by Professor Sheep

### 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](http://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

- [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

- [Free Your Functions!](https://youtu.be/WLDT1lDOsb4) ~ CppCon 2017 Talk by Klaus Igleberger ← 
- [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 ← 
- [Everything You Ever Wanted to Know about DLLs](https://youtu.be/JPQWQfDhICA) ~ CppCon 2017 Talk by James McNellis ← 

### 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

# C++ Libraries

- [Boost C++ Libraries](https://www.boost.org/) ~ Somewhat an extension for current C++ standard
- [GSL](https://github.com/Microsoft/GSL) ~ Guidelines Support Library by Microsoft
- [List of Open Source C++ libraries](https://en.cppreference.com/w/cpp/links/libs)

### Embeding different languages in C++

- [Howling at the Moon: Lua for C++ Programmers](https://www.youtube.com/watch?v=pfwHCiP1HFM) ~ CppCon 2017 Talk by Andreas Weis
- [Embedding Lua in C++](https://www.youtube.com/playlist?list=PLLwK93hM93Z3nhfJyRRWGRXHaXgNX0Itk) ~ Video Tutorial Series by Dave Poo
- [Introduction to C++ python extensions and embedding Python in C++ Apps](https://www.youtube.com/watch?v=bJq1n4gQFfw) ~ CppCon 2016 Talk by Diego Rodriguez-Losada

### Custom container libraries for C++

- [tree.hh](http://tree.phi-sci.com/index.html) ~ Tree Type container library for C++

### Graphical interfaces for C++

- [learnopengl.org](https://learnopengl.com/)
- [opengl-tutorial.org](http://www.opengl-tutorial.org/)
- [C++ OpenGL](https://www.youtube.com/playlist?list=PLlrATfBNZ98foTJPJ_Ev03o2oq3-GGOS2) ~ Video Tutorial Series by TheChernoProject
- [WXwidgets C++ Tutorial](https://www.youtube.com/watch?v=FOIbK4bJKS8) ~ Video Tutorial by javidx9 ← 

Source: [GitHub](https://github.com/RedSkittleFox/Cpp-Learning-Resources)

# C learning resources

This repository contains list of books and other resources about C programming that in my opinion are best to learn from. There are many sources but not every is correct. This way, beginners make a lot of mistakes in their code. I suggest reading books in the order I’ve provided.

#### Where **not** to learn from:

- [TutorialsPoint](https://www.tutorialspoint.com/cprogramming/index.htm). TutorialsPoint is an good website for **reference** but not for learning. If you want to learn something to it’s fullest, get a book.
- [Udemy](https://www.udemy.com/c-programming-for-beginners/). Udemy is not good place to learn C from. Courses cost pretty much ($100). **Some courses recommend using old Borland C++ Builder** - learning outdated stuff is not good way to go.
- [SoloLearn](https://www.sololearn.com/). SoloLearn does not offer any course to learn C from. The website teaches you only theoretically how to do something, while your own experience teaches practically you how to do something.
- [Youtube](https://youtube.com/). Learning from various youtube channels that are not-so-popular is not a good idea. You need solid place to learn from. Although, there are channels like [this one](https://www.youtube.com/channel/UCzn6vAfspIcagLax1fck_jw). They introduce really bad programming practices and teach how **not** to program.

#### Where to learn from:

- [K&R book](http://cs.indstate.edu/~cbasavaraj/cs559/the_c_programming_language_2.pdf) is often thought as the bible of C. There are many C standards but K&R C is thought as the most common - every compiler has to support it. The most used standard is C89, although we have C99 and C11 that are more recent. This way, K&R book is always on topic. It was written by creators of C - they can’t be wrong.

- [C Programming: Modern approach, 2nd Edition](https://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504)

- [Learn C the hard way](https://learncodethehardway.org/c/). Just looking at the title, it may not be greatest book for newcomer to learn.

- [C Programming Absolute Beginner’s Guide (3rd Edition)](https://www.amazon.com/Programming-Absolute-Beginners-Guide-3rd/dp/0789751984). It’s suggested to check out this book if others are too difficult for you.

- (NASA C style book)[[http://homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf](http://homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf)]. This book is pretty nice place to learn proper way how to program in C to write readable code.

Please note that this list as stated on beginning, is based primarily on my opinion. If you disagree with some facts, please open issue / submit a pull request that contents are satisfying you. I am working on a C book that after review will probably get on this list. Books that I am not sure about quality:

- [Programming in C (4th Edition) (Developer’s Library)](https://www.amazon.com/Programming-C-4th-Developers-Library/dp/0321776410/ref=pd_bxgy_14_img_2?_encoding=UTF8&pd_rd_i=0321776410&pd_rd_r=F4EZTNWZYDBJA50CBXYE&pd_rd_w=ZihCY&pd_rd_wg=4ehaO&psc=1&refRID=F4EZTNWZYDBJA50CBXYE)

Source: [GitHub](https://github.com/KrzysztofSzewczyk/C-Learning-Resources)

# `Begin(c++)` : Resources for C++ Beginners

## General

- 🌏 The official [ISO C++ Get Started! page](https://isocpp.org/get-started)

## Primers

- 🎥 [Herb Sutter: (Not Your Father’s) C++](https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/-Not-Your-Father-s-C-)
- 🎥 [Beginning with C++](https://www.youtube.com/watch?v=9WHRfU7U9lk) by Jens Weller
- 🎥 [Learning “Modern” C++](https://www.youtube.com/playlist?list=PLaayvGRiG0xIeaQO1mEnIGAQdgWUgN_Yi) by Jason Turner
- 📖 [A Tour of C++](http://click.linksynergy.com/fs-bin/click?id=/TDPPeRUMm4&offerid=145238.10000310&type=3&subid=0) by Bjarne Stroustrup ([teaser](https://isocpp.org/tour))
- 📖 [C++17 - The Complete Guide](http://www.cppstd17.com/) by Nicolai M. Josuttis
- 📖 [C++ Templates - The Complete Guide, 2nd Edition](http://www.tmplbook.com/) by Nicolai M. Josuttis

# Tutorials

- 🎥 Kate Gregory’s [Pluralsight page](https://app.pluralsight.com/profile/author/kate-gregory)
- 🏫 The [cplusplus.com](http://cplusplus.com) [tutorial](http://www.cplusplus.com/doc/tutorial/)
- 🎥 [C++ London Uni](https://www.cpplondonuni.com/) ([videos](https://www.youtube.com/channel/UCVaVY-fcOSBTc_8HibVB5VA/featured))
- 📖 [Effective C++ Series](https://www.aristeia.com/books.html) by Scott Meyers

## References

- 🌏 [cppreference.com](https://en.cppreference.com/) - _the_ reference for standard C & C++ language and libraries
- 🌏 Wikipedia’s list of [C++11](https://en.wikipedia.org/wiki/C%2B%2B11), [C++14](https://en.wikipedia.org/wiki/C%2B%2B14) and [C++17](https://en.wikipedia.org/wiki/C%2B%2B17) features
- 📖 [The C++ Programming Language, 4th Edition](https://www.amazon.com/The-Programming-Language-4th-Edition/dp/0321563840/) by Bjarne Stroustrup
- 📖 [The C++ Standard Library - A Tutorial and Reference, 2nd Edition](http://www.cppstdlib.com/) by Nicolai M. Josuttis

## Try C++

- 🌏 [Wandbox](https://wandbox.org/) - lets you edit, compile and run simple C++ programs in a browser
- 🌏 [Compiler Explorer](https://godbolt.org/) - lets you edit and compile simple C++ programs and see what assembler is produced

## Community

- 🌏 The official home of [ISO C++](https://isocpp.org/)
- 🌏 [#include \<C++\>](https://www.includecpp.org/) - inclusivity initiative including Discord server
- 🌏 [reddit](https://www.reddit.com/r/cpp/) - C++ Reddit subgroup
- 🌏 [Slack](https://cpplang.now.sh/) - C++ Slack team signup page

## Once You Get Comfortable

Try these intermediate-level talks that go beyond the individual features and explain how to put together the best code with them!

- 🎥 [C++11 Style](https://youtu.be/0iWb_qi2-uI) by Bjarne Stroustrup
- 🎥 [Using Types Effectively](https://www.youtube.com/watch?v=ojZbFIQSdl8) by Ben Deane
- 🎥 [10 Core Guidelines You Need to Start Using Now](https://www.youtube.com/watch?v=XkDEzfpdcSg) by Kate Gregory
- 🎥 [Functional C++](https://www.youtube.com/watch?v=mlkE8EJZODw) by Kevlin Henney
- 🎥 [C++ Seasoning](https://channel9.msdn.com/Events/GoingNative/2013/Cpp-Seasoning) by Sean Parent
- 🎥 [Easy to Use, Hard to Misuse: Declarative Style in C++](https://youtu.be/I52uPJSoAT4) by Ben Deane
- 🎥 [Curiously Recurring C++ Bugs at Facebook](https://youtu.be/lkgszkPnV8g) by Louis Brandy
- 🎥 [Choosing the Right Integer Types in C and C++](https://youtu.be/IJaa58cfvOw) by Dan Saks
- 🎥 [Testing in Software Engineering ~2010-2030](https://youtu.be/uaZtpZGFyPo) by Titus Winters

## Bite-sized Talks

- 🎥 [Modern C++ Coming to Terms With Terms](https://youtu.be/14dJ4XRuDEk) by Jon Kalb
- 🎥 [Modern C++](https://youtu.be/C39AaMFys_k) by Michael Caisse
- 🎥 [unsigned: A Guideline for Better Code](https://youtu.be/wvtFGa6XJDU) by Jon Kalb
- 🎥 [The Shape of a Program](https://www.youtube.com/watch?v=P2lxGnbDkDI) by James McNellis
- 🎥 [The End of std::endl](https://youtu.be/6WeEMlmrfOI) by Dietmar Kühl
- 🎥 [10 Things Junior C++ Devs Don’t Get](https://youtu.be/dSSIXKe6iXE) by Victor Ciura
- 🎥 [Can I has grammar?](https://youtu.be/tsG95Y-C14k) by Timur Doumler
- 🎥 [Standard Slam](https://youtu.be/ZLNq-4IiNTY) by Michael Caisse
- 🎥 [Algorithm Mnemonics: Increase your Productivity with STL Algorithms](https://youtu.be/tSq7yDwS1vM) by Tommy Bennett
- 🎥 [Regular Expressions Redefined in C++](https://youtu.be/3WGsN_Hp9QY) by Hana Dusikova
- 🎥 [Presenting Code](https://www.youtube.com/watch?v=-o-Wjy_ISvs) by Jens Weller
- 🎥 [Why not Conan (part II)?](https://youtu.be/BmtTbhdalyc) by Diego Rodriguez-Lopez
- 🎥 [This is Why We Can’t Have Nice Things](https://youtu.be/fv--IKZFVO8) by Jon Kalb
- 🎥 [A Fool’s Consistency](https://youtu.be/_27NHB1OlNI) by Jonathan Müller
- 🎥 [Programing: The Last 4000 Years](https://youtu.be/y2___qaG_9Q) by Juanpe Bolívar
- 🎥 [Standardese](https://youtu.be/zoSGHMi-0lE) by Jonathan Müller
- 🎥 [C++ Koans](https://youtu.be/Ft3QSbdhP3s) by Tony Van Eerd
- 🎥 [Readable C++](https://youtu.be/zUVQhcu32rg) by Timur Doumler
- 🎥 [Communicating via Diagnostics: Observations and Tips for Authors](https://youtu.be/GNhwzTlcDp0) by Walter Brown
- 🎥 [quick-bench.com](https://youtu.be/mDkuJvxlF4I) by Fred Tingaud
- 🎥 [Workflow hacks for developers](https://youtu.be/K4XxeB1Duyo) by Anny Gakhokidze
- 🎥 [Copy Elision](https://youtu.be/IZbL-RGr_mk) by Jon Kalb
- 🎥 [You’re Not as Smart as You Think You Are](https://youtu.be/fbkfH0IZW8g) by Phil Nash
- 🎥 [Beyond the Horizon of C++](https://youtu.be/4Wm6doj9iUM) by Hana Dusíková
- 🎥 [Why you should avoid Linked Lists](https://www.youtube.com/watch?v=YQs6IC-vgmo) by Bjarne Stroustrup

## Improve Your Skills

- 🌏 [HackerRank](https://www.hackerrank.com/) sets you challenges to hone your basic programming skills
- 🌏 [GitHub C++ Projects](https://github.com/trending/c++) are one way to learn by contributing to open source C++ projects

Source: [GitHub](https://gist.github.com/johnmcfarlane/1b2d9c83e4d3f700ba61e2df4077c613)

# A small collection of notes and resources related to basic C++.

### Stack Overflow’s Answer

- [The Definitive C++ Book Guide and List](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)

> This question attempts to collect the few pearls among the dozens of bad C++ books that are published every year. Unlike many other programming languages, which are often picked up on the go from tutorials found on the Internet, few are able to quickly pick up C++ without studying a well-written C++ book. It is way too big and complex for doing this. In fact, it is so big and complex, that there are very many very bad C++ books out there. And we are not talking about bad style, but things like sporting glaringly obvious factual errors and promoting abysmally bad programming styles.

### C++ Crash Course

- [Gibs Jose’s C++ Cheat Sheet](https://github.com/gibsjose/cpp-cheat-sheet)
- [Crash Course by Nicolas P Rougie](https://www.labri.fr/perso/nrougier/teaching/c++-crash-course/index.html)
- [A Transition Guide from Python 2.x to C++](https://github.com/mithi/cpp-resources/blob/master/old/pdf/book-0-python-to-cpp.pdf)
  - Michael H. Goldwasser David Letscher, Saint Louis University, August 2011 revision

- [Sololearn](https://www.sololearn.com/Play/CPlusPlus)

### Others

- [Learning Lad: Learn C++](https://www.youtube.com/playlist?list=PLfVsf4Bjg79Cu5MYkyJ-u4SyQmMhFeC1C)
- [Learn C++ From Programiz](https://www.programiz.com/cpp-programming/return-reference)
- [C++ Notes by Fredosaurus](http://www.fredosaurus.com/notes-cpp/index.html), [Expanding an Array](http://www.fredosaurus.com/notes-cpp/newdelete/55dynexample.html)
- [programminghelporg](https://www.youtube.com/watch?v=xfgcEjCd9as&list=PL318A5EB91569E29A)
- See also: **`./old./md/`** directory

Source: [GitHub](https://github.com/mithi/cpp-resources)

# Awesome C/C++ performance optimization resources

## Contents

- [Talks](https://github.com/fenbf/AwesomePerfCpp#Talks)
- [Articles](https://github.com/fenbf/AwesomePerfCpp#articles)
- [Sites/Blogs](https://github.com/fenbf/AwesomePerfCpp#sitesblogs)
- [Tools](https://github.com/fenbf/AwesomePerfCpp#tools)
- [Libraries](https://github.com/fenbf/AwesomePerfCpp#libraries)
- [Books](https://github.com/fenbf/AwesomePerfCpp#books)
- [About](https://github.com/fenbf/AwesomePerfCpp#about)

## Talks

2013:

- Going Native 2013 - [Andrei Alexandrescu, Writing Quick Code in C++, Quickly](https://www.youtube.com/watch?v=MvFj8qo1iuA)
- Going Native 2013 - [Stephan T. Lavavej, rand() Considered Harmful](https://www.youtube.com/watch?v=LDPMpc-ENqY)
- Going Native 2013 - [Sean Parent, C++ Seasoning](https://www.youtube.com/watch?v=qH6sSOr-yk8)

2014:

- code::dive conference 2014 [Scott Meyers: Cpu Caches and Why You Care](https://www.youtube.com/watch?v=WDIkqP4JbkE)([slides](http://www.aristeia.com/TalkNotes/codedive-CPUCachesHandouts.pdf))
- CppCon 2014 [Andrei Alexandrescu “Optimization Tips - Mo’ Hustle Mo’ Problems”](https://www.youtube.com/watch?v=Qq_WaiwzOtI)
- CppCon 2014 [Mike Acton “Data-Oriented Design and C++”](https://www.youtube.com/watch?v=rX0ItVEVjHc)
- CppCon 2014 [Chandler Carruth “Efficiency with Algorithms, Performance with Data Structures”](https://www.youtube.com/watch?v=fHNmRkzxHWs)

2015:

- code::dive conference 2015 [Andrei Alexandrescu - Writing Fast Code I](https://www.youtube.com/watch?v=vrfYLlR8X8k) ([slides](http://codedive.pl/wp-content/uploads/2016/01/FastCode-handouts.pdf))
- code::dive conference 2015 [Andrei Alexandrescu - Writing Fast Code II](https://www.youtube.com/watch?v=9tvbz8CSI8M) ([slides](http://codedive.pl/wp-content/uploads/2016/01/FastCode-handouts.pdf))
- CppCon 2015 [Chandler Carruth, “Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!”](https://www.youtube.com/watch?v=nXaxk27zwlk)
- CppCon 2015 [Bryce Adelstein-Lelbach “Benchmarking C++ Code"](https://www.youtube.com/watch?v=zWxSZcpeS8Q)
- Meeting C++ 2015 [Understanding Compiler Optimization - Chandler Carruth - Opening Keynote](https://www.youtube.com/watch?v=FnGCDLhaxKU)

2016:

- ACCU 2016 [‘Fastware’ - Andrei Alexandrescu](https://www.youtube.com/watch?v=AxnotgLql0k)
- C++Now 2016 [Timur Doumler: C++ Performance in Practice: Align, Vectorise, Cache, Jump!](https://www.youtube.com/watch?v=c-hZpChQKe0) ([slides](https://github.com/boostcon/cppnow_presentations_2016/blob/master/03_friday/cpp_performance_in_practice_align_vectorise_cache_jump.pdf))
- C++Now 2016 [David Stone: Exceptional Performance](https://www.youtube.com/watch?v=0_FQIDEf7_Q)
- C++Now 2016 [Jason Turner: Practical Performance Practices](https://www.youtube.com/watch?v=lNnBExDoNSQ)
- CppCon 2016 [Timur Doumler “Want fast C++? Know your hardware!"](https://www.youtube.com/watch?v=BP6NxVxDQIs)
- CppCon 2016 [Jason Turner “Practical Performance Practices"](https://www.youtube.com/watch?v=uzF4u9KgUWI)
- CppCon 2016 [Chandler Carruth “High Performance Code 201: Hybrid Data Structures"](https://www.youtube.com/watch?v=vElZc6zSIXM)
- CppCon 2016 [McKenney “Beyond the Issaquah Challenge: High-Performance Scalable Complex Updates"](https://www.youtube.com/watch?v=qcD2Zj9GgI4)
- CppCon 2016 [D. Dechev & D. Zhang “High Performance C++ Concurrent Transactional Data Structures"](https://www.youtube.com/watch?v=uDNb8JL0vv8)
- CppCon 2016 [Matthew Bentley “Colonies, performance and why you should care"](https://www.youtube.com/watch?v=wBER1R8YyGY)
- CppCon 2016 [Christiaan Pretorius “Cache Optimized Hash Tables”](https://www.youtube.com/watch?v=aXj_DsIx1xs)
- CppCon 2016 [Tim Haines “Improving Performance Through Compiler Switches…"](https://www.youtube.com/watch?v=w5Z4JlMJ1VQ)

## Articles

- [Three Optimization Tips for C++](https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920/), by Andrei Alexandrescu, @Facebook Engineering
- [why GNU grep is fast](https://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html)
- [Hash Functions all the way down](http://aras-p.info/blog/2016/08/02/Hash-Functions-all-the-way-down/) from Aras-P, and the follow up [here](http://aras-p.info/blog/2016/08/09/More-Hash-Function-Tests/)
- [Why do CPUs have multiple cache levels?](https://fgiesen.wordpress.com/2016/08/07/why-do-cpus-have-multiple-cache-levels/)
- [ETW Central](https://randomascii.wordpress.com/2015/09/24/etw-central/) - by RandomASCII
- [Micro benchmarking libraries for C++](http://www.bfilipek.com/2016/01/micro-benchmarking-libraries-for-c.html)- on Bartek’s blog
- [How to start with Software Optimization](http://www.bfilipek.com/2014/07/flexible-particle-system-how-to-start.html), from Flexible Particle Experiments series, Bartek’s blog.
- [Taking advantage of cache coherence in your programs](http://supercomputingblog.com/optimization/taking-advantage-of-cache-coherence-in-your-programs/)
- [Gallery of Processor Cache Effects, C#](http://igoro.com/archive/gallery-of-processor-cache-effects/)
- [How We Beat C++ STL Binary Search](https://realm.io/news/how-we-beat-cpp-stl-binary-search/)
- [C++ benchmark – std::vector VS std::list VS std::deque](http://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html)
- [Container Study](http://www.joshbarczak.com/blog/?p=525)
- [Associative-Container Performance Tests](https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/assoc_performance_tests.html)
- [C++ Core Guidelines, Performance section](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-performance)
- [C++ Best Practices, Performance section](https://lefticus.gitbooks.io/cpp-best-practices/content/08-Considering_Performance.html)
- [That’s Not Normal–the Performance of Odd Floats](https://randomascii.wordpress.com/2012/05/20/thats-not-normalthe-performance-of-odd-floats/)
- [gprof, Valgrind and gperftools – an evaluation of some tools for application level CPU profiling on Linux](http://gernotklingler.com/blog/gprof-valgrind-gperftools-evaluation-tools-application-level-cpu-profiling-linux/)
- [The Performance API (PAPI) project](http://icl.cs.utk.edu/papi/overview/index.html)
- [Roofline Performance Model](https://crd.lbl.gov/departments/computer-science/PAR/research/roofline/)
- [C++ timing strategies compared (in Windows)](http://baremetalcode.blogspot.com/2011/10/c-timing-strategies-compared-in-windows.html)- from baremetalcode blog.
- [Simply about complex - Data Oriented Design by example](https://nikitablack.github.io/2017/02/02/Data-Oriented-Design-by-example.html)
- [Guide into OpenMP: Easy multithreading programming for C++](http://bisqwit.iki.fi/story/howto/openmp/)
- [C++ Optimization Bibliography - Kurt Guntheroth’s](http://oldhandsblog.blogspot.bg/2016/09/c-optimization-bibliography.html)

Manuals:

- [Intel® 64 and IA-32 Architectures Optimization Reference Manual](http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html)

## Sites/Blogs

- [Agner`s CPU blog](http://www.agner.org/optimize/blog/)
- [Agner’s Software optimization resources](http://www.agner.org/optimize/)
- [The ryg blog](https://fgiesen.wordpress.com/)
- [Random ASCII](https://randomascii.wordpress.com/)
- [The Every Computer Performance Blog](https://rwwescott.wordpress.com/)
- [The Supercomputing Blog](http://supercomputingblog.com/)
- [Daniel Lemire’s blog](http://lemire.me/blog/)
- [Wojciech Mula’s site: 0x80.pl - articles on performance, SIMD](http://0x80.pl/articles/index.html)
- [Bartek’s programming blog](http://www.bfilipek.com/)

## Tools

### Free

- [AMD Code XL](http://developer.amd.com/tools-and-sdks/opencl-zone/codexl/)
- [Very Sleepy](http://www.codersnotes.com/sleepy/)
- [Proffy](http://www.pauldoo.com/proffy/)
- [Windows Performance Toolkit - XPERF](https://msdn.microsoft.com/en-us/library/hh162945.aspx)
- [Performance and Diagnostic Tools in Visual Studio 2015](https://msdn.microsoft.com/en-us/magazine/dn973013.aspx)
- [Valgrind](http://valgrind.org/)
- [TAU Performance System](http://www.cs.uoregon.edu/research/tau/home.php)
- [Google Performance Tools (gperftools)](https://github.com/gperftools/gperftools)
- [Linux perf tools](https://perf.wiki.kernel.org/index.php/Tutorial)
- [NVIDIA Visual Profiler](https://developer.nvidia.com/nvidia-visual-profiler)
- [Qualcomm Snapdragon Profiler](https://developer.qualcomm.com/software/snapdragon-profiler)
- [Oracle Solaris Studio Performance Analyzer](http://www.oracle.com/technetwork/server-storage/solarisstudio/features/performance-analyzer-2292312.html)
- [OProfile](http://oprofile.sourceforge.net/about/) for Linux

### Paid

- [Intel® VTune™](https://software.intel.com/en-us/intel-vtune-amplifier-xe)
- [Intel® Vectorization and Threading Advisor](https://software.intel.com/en-us/intel-advisor-xe)
- [AQtime Pro, from SmartBear](https://smartbear.com/product/aqtime-pro/overview/)
- [GlowCode](http://www.glowcode.com/summary1_gc.htm)

## Libraries

- [Celero micro-benchmarking library](https://github.com/DigitalInBlue/Celero)
- [Nonius library](https://nonius.io/)
- [Hayai micro benchmarking library](https://github.com/nickbruun/hayai), [into article](https://bruun.co/2012/02/07/easy-cpp-benchmarking)
- [Google benchmark library](https://github.com/google/benchmark)

## Books

- [PDF: optimizing C++](http://www.agner.org/optimize/optimizing_cpp.pdf) - by Agner Fog. FREE
- [Optimizing C++, WikiBooks](https://en.wikibooks.org/wiki/Optimizing_C%2B%2B) - FREE
- The Software Optimization Cookbook: High Performance Recipes for IA-32 Platforms, 2nd Edition
- Video Game Optimization, Eric Preisz
- Optimized C++: Proven Techniques for Heightened Performance, Kurt Guntheroth
- Power and Performance: Software Analysis and Optimization, Jim Kukunas
- Systems Performance: Enterprise and the Cloud, Brendan Gregg
- Every Computer Performance Book, Bob Wescott
- C++ Concurrency in Action, Second Edition, Anthony Williams

## About

This list was started by Bartlomiej Filipek ([@fenbf](https://twitter.com/fenbf)). If you like to help please read CONTRIBUTING.md instructions and just make a pull request to this repo.

## License

[![Creative Commons License](https://camo.githubusercontent.com/bbab3b8136849892a5b19334bc01d2472f797680/687474703a2f2f692e6372656174697665636f6d6d6f6e732e6f72672f6c2f62792f342e302f38387833312e706e67)](http://creativecommons.org/licenses/by/4.0/)

This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).

Source: [GitHub](https://github.com/fenbf/AwesomePerfCpp)

# Awesome Curated Programming Resources

[Curated Programming Resources](https://github.com/Michael0x2a/curated-programming-resources/blob/master/resources.md)

# Awesome Modern C++

[A collection of resources on modern C++](https://github.com/rigtorp/awesome-modern-cpp)

# Awesome C++

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-… stuff.  
[C++ Resources](https://github.com/fffaraz/awesome-cpp)

# Project Based Learning

A list of programming tutorials in which learners build an application from scratch. These tutorials are divided into different primary programming languages. Some have intermixed technologies and languages.  
[Curated list of project-based tutorials](https://github.com/tuvtran/project-based-learning)

## ENJOY & HAPPY LEARNING! 👍

---

<div class="post-metadata">

**Author:** ![Aina](https://onehack.st/user_avatar/onehack.st/aina/32/167469_2.png) [@Aina](https://onehack.st/u/Aina)\
**Post date:** [June 9, 2020, 12:56pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/2 "2020-06-09T12:56:16Z")

</div>



---

<div class="post-metadata">

**Author:** ![Babu\_Rao1](https://onehack.st/user_avatar/onehack.st/babu_rao1/32/24996_2.png) [@Babu\_Rao1](https://onehack.st/u/Babu_Rao1)\
**Post date:** [June 9, 2020, 1:13pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/3 "2020-06-09T13:13:40Z")

</div>

Great  
Another site which I like is gateoverflow and geeks for geeks superb site  
Btw thank you

---

<div class="post-metadata">

**Author:** ![moaxs1](https://onehack.st/user_avatar/onehack.st/moaxs1/32/145979_2.png) [@moaxs1](https://onehack.st/u/moaxs1)\
**Post date:** [June 9, 2020, 4:43pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/4 "2020-06-09T16:43:27Z")

</div>

Thank you so much @Aina. Just Love it…

---

<div class="post-metadata">

**Author:** ![Alex](https://onehack.st/user_avatar/onehack.st/alex/32/16544_2.png) [@Alex](https://onehack.st/u/Alex)\
**Post date:** [June 9, 2020, 5:07pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/5 "2020-06-09T17:07:05Z")

</div>

Thank you so much @Aina for sharing these awesome resources God bless you

---

<div class="post-metadata">

**Author:** ![Iyas](https://onehack.st/user_avatar/onehack.st/iyas/32/44148_2.png) [@Iyas](https://onehack.st/u/Iyas)\
**Post date:** [June 9, 2020, 6:51pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/6 "2020-06-09T18:51:43Z")

</div>

Thanks @Aina for this big share

---

<div class="post-metadata">

**Author:** ![Aj\_senpai](https://onehack.st/user_avatar/onehack.st/aj_senpai/32/29680_2.png) [@Aj\_senpai](https://onehack.st/u/Aj_senpai)\
**Post date:** [June 10, 2020, 10:35am UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/7 "2020-06-10T10:35:27Z")

</div>

@Aina wow, this is so well organised !!

---

<div class="post-metadata">

**Author:** ![Nemesis\_X](https://onehack.st/user_avatar/onehack.st/nemesis_x/32/32747_2.png) [@Nemesis\_X](https://onehack.st/u/Nemesis_X)\
**Post date:** [June 10, 2020, 2:25pm UTC](https://onehack.st/t/awesome-c-c-learning-resources-everything-that-you-need/91036/8 "2020-06-10T14:25:19Z")

</div>

super big collection bro , thanks for the share
