Я изучил С++ впервые несколько лет назад, дважды прочитав Stroustrup "Язык программирования С++" и участвуя в течение года в довольно большом проекте (хотя уровень команды С++ был довольно низким). С++ из книги "Основатель" действительно был огромным расширением старого старого C. Powerfull и объектно-ориентированного и даже родового, но все же расширения. И, да, было такое, что STL каким-то образом добавила к стандарту стандарт, который был там по каким-то скрытым причинам - независимо от того, собираетесь ли вы его использовать или нет. Итак, в те дни у меня не было хорошего впечатления от С++: помимо всех этих вечных проблем C с памятью, указателями и границами массивов было добавлено много новых: с классами и шаблонами и сложным синтаксисом и много мышления, чтобы разобраться.
Теперь, после нескольких лет удержания от С++, я недавно начал обновлять свой ноу-хау, но теперь я beagan с "Ускоренным С++" Эндрю Кенигом и Барбарой Э. Му. И то, что я вижу, есть абсолютно "другой С++"! Следуя этой книге, вы фактически можете использовать С++ почти без знания своего C-ядра: вы никогда не сможете использовать массивы, поскольку у вас есть векторы, вы можете забыть о char *, так как у вас есть строка и т.д. И т.д. Из этого точка зрения, STL на самом деле является сердцем языка, и сам язык представляется очень "высокоуровневым", но с производительностью и контролем над объектами, которые никогда не могли позволить себе ни Java, ни Python.
Итак, что С++ вы используете в своей практике? Смешаете ли вы стили, скажем, массивы и векторы? Существуют ли какие-либо правила или рекомендации?...
UPDATE:
Мне сказали в комментариях, что я говорю о том, что теперь называется "Modern С++". Поиск по этим словам выявляет следующие действительно интересные темы: