Quote from dcraig:
I think that's a very valid point. It really does help a lot to have access to a teacher/mentor/colleague who you can bounce questions off. Also as a source of advice for "good practice". Otherwise you find yourself stuck on some issue that may just be a trival question for a teacher but consumes a horrible amount of time if you have to chase it down yourself. Do that over and over again and it takes forever to get anything done.
Having said that, there is a lot of available stuff on the net and it is vastly easier than it once was if you do it on your own. Also bear in mind that there is some basic elements of programming to be learned eg search techniques - what is a B-Tree, a hash table, a linked list, an array, how do they work and when would you choose one over ther others, etc etc. These days, it would be wise to learn some of the basics of concurrent programming, so that you can develop multithreaded code on multicore CPUs. These principles are not dependant on languague that you use.
As aleady remarked - why C++ ? It's a lot harder than Java for example and even for experienced developers, the job is liable to get done sooner in Java than C++. Don't worry about speed issue - it's vastly overstated.