C++
I've been learning C++ for the past couple of years and really enough the precise nature of coding in it, especially access to memory and general feeling of control you have when coding with it.
Below I've listed a series of resources I use consider top quality and hopefully will improve your learning experience:
Contents
- Learn X in Y Minutes
- The Cherno
- Jason Turner / C++ Weekly
- CPP London
- Exercism
- CppCon Talks
- Modern C++
Learn X in Y Minutes
https://learnxinyminutes.com/docs/c++/
Learn X in Y Minutes is a resource for getting started for people with existing programming experience and want to quickly try out / get up to speed with a new language.
For nearly any language you can think of you can find a single file example explaining the ins / outs of a language. The learncpp.cpp
file is just over 1000 loc. See the example introducing vector below:
// Vector (Dynamic array)
// Allow us to Define the Array or list of objects at run time
#include <vector>
string val;
vector<string> my_vector; // initialize the vector
cin >> val;
my_vector.push_back(val); // will push the value of 'val' into vector ("array") my_vector
my_vector.push_back(val); // will push the value into the vector again (now having two elements)
// To iterate through a vector we have 2 choices:
// Either classic looping (iterating through the vector from index 0 to its last index):
for (int i = 0; i < my_vector.size(); i++) {
cout << my_vector[i] << endl; // for accessing a vector's element we can use the operator []
}
// or using an iterator:
vector<string>::iterator it; // initialize the iterator for vector
for (it = my_vector.begin(); it != my_vector.end(); ++it) {
cout << *it << endl;
}
The Cherno Project
A YouTube channel from a guy called Yan who used to work at EA, focusing on Game Engines and applications of C++. He has a full playlist focused on learning C++, other playlists worth checking out are his older rendering series in C++ and OpenGL and new Game Engine series which provides a good example of C++ in real life!
Jason Turner (and C++ Weekly)
Jason runs a YouTube series called C++ Weekly encouraging and teaching users to write high quality, modern C++. His series and CMake starter project are super useful for getting setup with the right tools. Through Jason I've learnt all about about CMake, Conan, cppcheck, ccache, clang-format, clang-tidy, catch2 and many more...
C++ Weekly: https://www.youtube.com/playlist?list=PLs3KjaCtOwSZ2tbuV1hx8Xz-rFZTan2J1
CPP London Uni
CPP London Uni is a London based school / meetups teaching programming and C++. I've been along to a reasonable number of the Uni meeting and full CPP London meetups and have to thank them for the incredible work they do. The courses are and will always be free, as they mention on their website!
Exercism (C++ Track)
Need code practise with a real mentor reviewing your code and providing you feedback then Exercism is worth a go and it's 100% free!
One drawback of limited mentors means it can take a couple of days to get feedback on problems but the value returned through good feedback is priceless and worth the wait.
CppCon Talks
CppCon is one of the main C++ conferences throughout the year and luckily all the videos are uploaded and available online!
Modern C++ Course for Image Processing
Course form the University of Bonn I found whilst researching / working with SLAM, this course was indispensable for getting up to speed with modern features and filling in gaps in my knowledge. The series is available on YouTube running 10 lectures and roughly 14 hours of content.