I would like to be able convert one format to another(not immediately but eventually),know how to use tree and hash tables and linked lists properly using classes.
I want to be able to do a basic graphic user interface and use pointers well.
I've heard of the following books:
Exceptional C++-by Herb Sutter
Generative Programming,methods,tools and applications-by Czarnecki and Eisenecker
Algorithms in C++-Robert Sedgewick
Are these books good?except for the last one,will it help with what i want to learn?
If you have better clearer books you'd recommend please let me know
The Sutter book is Excellent, Also you should look at his STL book (Exceptional STL, I think). The STL is the "way-to-do-things" nowadays and the earlier you get to grips with that the better.
User-interfaces are not standardised so you need a platform specific book. Windows and POSIX - based interfaces are very different.
Also have a look at rather good online help like
Boost is a set of libraries that is very helpful and many of the things you find there complement the standard very well.
When you are a bit advanced then have a look at
That is Herb Sutters site and gives exceptional insight into the inner workings of C++. Not quite for beginners, even some intermediate programmers might find some of it quite challenging, but well worth looking at.
>>how to use tree and hash tables and linked lists properly using classes.
This sounds more like you need a Computer Science textbook. Using trees, heaps, hash tables, self-balancing trees, linked lists, etc. etc., these are computer science topics and they generally differ only on the details when it comes to implementation in C++ versus another language. I really don't know any general books in that field (I'm mostly going with specific problems -> specific methods -> wiki-page on it or a scientific paper on it -> implementation).
>>I want to be able to do a basic graphic user interface
This is not a C++ thing either. This is specific to the GUI tool that you can or want to use. I recommend Qt. I'm sure there are plenty of books or online tutorials/resources to help you with that.
>>and use pointers well.
The more you learn about C++, the less likely it is that you will use pointers (at least raw pointers). But surely, you have to know how to use them, I would put this under "basic skills" in C++.
>>Exceptional C++-by Herb Sutter
I haven't read it, but anything by Herb Sutter is bound to be awesome.
All the resources that drkybelk has recommended are are surely very good. Boost is a master-piece of a library, the more of it you can understand and use, the better you are as a programmer, I would say.
I would also recommend reading through the C++ FAQ by Marchall Cline. There is a ton of information in there about the intricacies of C++ and guidelines for designing good applications.
Once you have gone through the C++FAQ, you would be ready to tackle two of my favorite books on C++:
"C++ Coding Standards ..", Herb Sutter and Andrei Alexandrescu
"Modern C++ ..", Andrei Alexandrescu
The former has 101 rules and guidelines that are really great for improving the quality of your coding. The latter is probably the most advanced C++ book that you can find, it's not for the faint of heart, but with enough knowledge of C++ to start reading, it's delightful, a real demonstration of C++'s magic and awesome power.