C++ 20 years ago was right when C++ was being standardized (1998, but revised with fixes in 2003), so some of things you learned then may now no longer apply or be considered bad practice. The most major change since the original standardization was
C++11, which added an abundance of features. Since then, C++14 and C++17 have happened, with experimental features for C++20 on the way.
I don't know of much that has actually been removed. std::auto_ptr is deprecated has been superseded by smart pointers like std::unique_ptr or std::shared_ptr. Features like std::random_shuffle are also now deprecated (use std::shuffle). But they aren't removed.
The filesystem library in C++ became standardized in C++17, though may still only be accessible in the "experimental" namespace on some compilers, you are correct. There is no filesystem library, or smart pointers, or improved random library, (among many other features) in C, so I'm not sure why you even brought up the std::filesystem namespace.
i thought C++ was supposed to be an improvement of C |
C++ is a different language than C. They are two separate languages, although they may have various overlapping use cases. I'm sure Bjarne Stroustrup wanted C++ to be completely better than C, but giving an absolute answer like "C++ is better than C" is just an opinion, that people still disagree on to this day.
In practice, C tends to be used in applications closer to the hardware, embedded environments, and is used when machines need to talk to each other. That doesn't mean you can't use C++, but there are various challenges.
Learn what
you want to learn. C learning material isn't going away any time soon, but neither is C++. Any decent programmer should have a basic understanding of how to accomplish tasks in both C and C++, anyway.
In my opinion, C++ is much more powerful than C, and can be much safer/faster to develop in through improvements on type safety, templates, classes, and a great standard library. C++ offers features for abstraction without the usual runtime cost of abstraction -- this puts a lot of the responsibility on the compiler to optimize C++ code, which modern compilers are very good at doing.