From my perspective it better and cheaper to spend a few weeks reading a well written C++ book, by one of the big names in the field. Rather than make due with some average guy who teaches C++.
I wouldn't recommend any book written before 2012, simply because the language changed a large amount with the C++11 standard. Its like a different language.
I also wouldn't recommend any book that starts off by teaching low level C first, only to get to high level STL last. Its better and more productive to do it the other way around. If you learn C first, you will learn a style that is hard to break out of. You want to learn to program C++ the right way, piece by piece, from the start.
"Programming: Principles and Practice Using C++ (2nd Edition)" by Bjarne, is a good book that teaches it the right way around.
Another excellent C++ book that does this "the right way around" is "A C++ Primer" by Lippman, Lajoie & Moo. The 5th edition is rewritten for C++11. Disclaimer: I've only used the 4th edition.
It is a reflection of the way C++ came to be the size it is. Stroustrup included everything and the kitchensink so c++ ended up being a fairly large and complex language.
Mind you, it's a learn programming book and doesn't assume prior programming experience; you can skim over a lot of material if you already know how to program. See the table of contents at http://www.stroustrup.com/PPP2_TOC.pdf
On the other hand if you don't do C++ first, you inevitably become pretty turned off by it once you try it. It has some neat qualities in the small (zero cost abstractions etc) but in the large with package/module management it's a horrible experience if you are used to Java/C#/Python/Python or even Node. I have a hard time picking up C++ because I'm
spoiled by other languages.
C++ has plenty of good sides (I've been using it since 'cfront', which makes me wonder who would downvote my comment that it isn't a good first language, I think I have enough experience in it (and other languages) by now to make that call), but the learning curve is extremely steep compared to say python.
Which makes me wonder what the very best beginners programming language is.
For a first lamguage I think kids should use something instantly rewarding. Something that lets you write gui:s or hack minecraft etc. It should be something that lets you accomplish things quickly but still teaches good practices.
If you are a first year CS student it's different. Then you need a few langs - One functional, one OO, one low level, at least.
I did Haskell/Java/C which I think was great, but 20 years later I'd choose F#/C#/C (or even Rust).
I wouldn't recommend any book written before 2012, simply because the language changed a large amount with the C++11 standard. Its like a different language.
I also wouldn't recommend any book that starts off by teaching low level C first, only to get to high level STL last. Its better and more productive to do it the other way around. If you learn C first, you will learn a style that is hard to break out of. You want to learn to program C++ the right way, piece by piece, from the start.
"Programming: Principles and Practice Using C++ (2nd Edition)" by Bjarne, is a good book that teaches it the right way around.