Για μένα το καλύτερο είναι των Deitel που υπάρχει και στα ελληνικά:
https://www.mgiurdas.gr/biblia/c-programmatismos-4i-ekdosi
Δεν είναι κανένα φοβερό βιβλίο που αξίζει να έχεις στη βιβλιοθήκη σου σε αντίθεση με αυτό του Stroustrup αλλά είναι από τα καλύτερα για να μάθεις μόνος σου. (Αν είσαι τύπος που μαθαίνει προγραμματισμό από βιβλίο κάτι ξεπερασμένο σήμερα
)
Ένα άλλο πολύ καλό βιβλίο που μπορείς να κατεβάσεις και δωρεάν είναι η σειρά του Bruce Eckell
http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
Αυτά έχω εγώ υπόψη μου γιατί από αυτά έμαθα αλλά σίγουρα τα τελευταία χρόνια θα έχουν βγει και καλύτερα όπως τα παρακάτω που δίνει η λίστα του stack overflow:
Λίστα Βιβλίων C++ από stack overflow
Τώρα σχετικά με το βιβλίο του Stroustrup αν ο itt αναφέρεται στο παλιό καλό βιβλίο δεν θα σου συνιστούσα να το πάρεις σε καμία περίπτωση για να μάθεις μόνος σου γιατί θα απογοητευτείς. Πρέπει ήδη να ξέρεις C++!!!
Ενώ είναι σίγουρα ένα εξαιρετικό και πλήρες βιβλίο δε νομίζω ότι είναι το καλύτερο για έναν αρχάριο στον προγραμματισμό με C++.
Εκτός και αν ο itt εννοεί κάποια πιο πρόσφατη έκδοση που απευθύνεται και σε ταπεινούς θνητούς
Για να "μάθεις" οντως C++ πρέπει να διαβάσεις όλη της σειρά της Addison-Wesley για τη C++ (μιλάμε πάντα στο τι πρέπει να διαβάσεις, ξεχνώντας τις άπειρες ώρες που πρέπει να χαλάσεις στο να κάνεις develop, debugging και γενικά να _δουλέψεις_ C++), να μάθεις να δουλεύεις με την STL, με τη Boost, με TMP κλπ. Επίσης μετά υπάρχουν πολύ ωραία βιβλία όπως το Windows via C++, που μπορούν σου δείξουν εις βάθος, πολύ ενδιαφέρονται concepts.
Ξέρεις ότι είμαι της άποψης πώς δεν αξίζει, σε πρώτη φάση τουλάχιστον, να προσπαθήσεις μάθεις προγραμματισμό με C++, άμα είσαι παντελώς αρχάριος, γιατί η C++ ( ομοίως και η C φυσικά) απαιτούν και να έχεις μια επαφή με το πώς δουλεύει το hardware και το λειτουργικό.
Μήπως μπορείς να γίνεις λίγο σαφέστερος itt; Γιατί να μάθει Python; Να ξεκινήσει κάποιος με Python ως πρώτη γλώσσα το καταλαβαινω. Αλλά να το γυρίσει από C σε Python και μετά πίσω στη C++; Τι όφελος θα έχει;
Εγώ δεν είπα να το γυρίσει σε C++ μετά την python. Είπα να δει python επειδή η C δεν έχει standard βιβλιοθήκη με collections, που σημαίνει ότι μπορεί πολύ εύκολα στην python να παίξει με lists (dynamic arrays) και με associative arrays. Το να κάνει expand μετά, σημαίνει ότι μπορεί να γυρίσει πίσω στη C και να ψαχτεί. Πώς φτιάχνω ένα δυναμικό array; Πώς αποφασίζω το growth factor αν χρειάζεται reallocation; Γιατί να μην κάνω απλά το array expand κάτα 1; Τι σκατά κάνει αυτή η memcpy;
Τα hashtables πέρα από το, ουάου αλγόριθμη, ασυμπτωτική ανάλυση, amortized O(1) search time, μπλα μπλα, μπορούν να επιτρέψουν στον άνθρωπο να κάνει τη ζωή του πιο εύκολη.
Μπορεί να γράψει ένα telephones['Νίκος'] = (landline, mobile) και να μην χρειάζεται να έχει διαβάσει 20 σελίδες στον CLRS για να βγάλει άκρη τι παίζει. Αφού δει τι όμορφα είναι τα hashtables ας κάτσει να διαβάσει για perfect hashing και γιατί πρέπει το array με τα buckets να έχει μήκος πρώτο αριθμό και πώς το φτιάχνω όλο αυτό στην ρημάδα τη C, που άμα κάνω ένα χαζό λάθος, μπορεί απλά να πεθάνει το process χωρίς κανένα διαγνωστικό μήνυμα.
Βέβαια σε όλη αυτήν τη συζήτηση δεν έχουμε βάλει καν τον παραγόντα του ότι είμαστε στο 2017 και μπορείς να μην ασχολήθεις καν με C άμα θες να μάθεις μια native γλώσσα για να κάνεις τέτοια πράγματα (η D και η Rust είναι πολύ καλύτερες επιλογές χρόνια τώρα).