+ 1
What advanced C++ concepts does SoloLearn NOT cover?
I constantly keep hearing that SoloLearn only teaches "basic" knowledge. It seems pretty comprehensive to me so it seems like there are things that I am missing. So that leads me to ask what does SoloLearn NOT cover then? For instance, what advanced C++ concepts are not covered in SoloLearn?
2 odpowiedzi
+ 4
Here's a few aspects of C++ that I think the standard Sololearn C++ course misses or does not cover in enough detail. I'll try to give a brief summary of each so you can know where to start if you want to research these on your own:
1) r-value vs l-value references, and move semantics
This refers to whether a value gets stored temporarily on the stack or in the RAM memory. Overloading methods to accept r-value references instead of l-value references can have a big impact on the safety and performance of your code. If this interests you, you should also check out Perfect Forwarding, Universal Reference, and std::move().
2) Multi-Threading
Honestly, I could write an entire book about multi-threading in C++ but it basically comes down to this: using multiple threads puts you at risk to memory leaks, data races and deadlocks (look those up if you don't know what they are), but writing good multi-threaded code can greatly enhance your performance. I would recommend researching Atomic's and Mutex's if this interests you.
3) The STL (Standard Template Library)
The C++ STL contains TONS of useful and often overlooked functions and data-structures for you to use! Before you go off and write a general-purpose algorithm, check if it's already been implemented in the STL. Chances are, the STL implemented it better than you could have. Additionally using STL data types like std::shared_pointer or std::unique_pointer can really help the memory safety of your code.
4) Runtime Preformance
The main reason people us C++ is for runtime preformance. The SoloLearn course does teach people about template arguments (which are a big part of writing compile-time code), but fail to teach people about useful keywords like "constexpr" or "inline" which gives the compiler more freedom to optimize your code. Additionally, it says nothing about hardware. C++ programmers have to worry about avoiding cache misses (being "cache friendly"), warming up the cache or being helpful to the branch-predictor (look those things up).
+ 1
Thanks dude. You're so awesome. No homo