I learned C++ for the first time years ago by reading Stroustrup's "The C++ Programming Language" for two times and participating for a year in quite a big project (though the level of c++ team was quite low). The C++ from the Founder's book was really a huge extension of good old C. Powerfull and object-oriented and even generic, but still - extension. And, yes, there was as STL somehow added to the language by standard, that was just there by some hidden reasons - whether you are going to use it or not. So, at that days I got not much of a good impression of C++: in addition to all these eternal C problems with memory, pointers and arrays' bounds there were a lot of new added: with classes and templates and complicated syntax and a lot of thinking to sort it out.
Now, after a years of keeping away from C++, I've started recently to refresh my knoweledge, but now I beagan with "Accelerated C++" by Andrew Koenig and Barbara E. Moo. And what I'm seeing there is absolutely "another C++"! Following this book, you can in fact use C++ almost without knowing its C-core: you can never use arrays, since you have vectors, you can forget about char*, since you have string, etc., etc. From this point of view, STL is really the heart of the language and the language itself appears to be a very "high level" one, but with performance and control over entities which neither Java, nor Python could ever afford.
So, what C++ do YOU use in you practice? Do you mix the styles, say, arrays and vectors? Are there any rules or best practices here?...
I was told in comments that the thing I'm talking about is what's now called "Modern C++". Searching by this words brings out the following really interesting threads: