50 конкретных способов улучшить использование стандартной библиотеки шаблонов

Амазонка ссылка на книгу.

Если вы опытный программист на C ++, то, скорее всего, слышали имя Скотт Мейерс, более того, вы поблагодарили его за его блестящие книги. «Эффективный STL» - один из них.

Если вы новичок в C ++ и пытались понять, стоит ли читать эту книгу (или STL в целом), следите за обновлениями!

Стандартная библиотека шаблонов (STL) - это встроенная библиотека для C ++. Он состоит из прекрасно спроектированных и реализованных утилит. Я скажу, что это больше, чем библиотека: это целый мир со своей философией и правилами, мир, полный возможностей. Как показывает практика, чем сильнее инструмент, тем сложнее им овладеть. Здесь на помощь приходит эта книга.

Книга состоит из 7 глав. STL предоставляет четыре типа компонентов: контейнеры, алгоритмы, итераторы и функторы.

Первые три главы посвящены контейнерам в STL. Обратите внимание, что каждая глава состоит из предметов. Каждый пункт - это отдельный совет. Название пункта является обязательным: «Всегда делай это» или «Никогда не делай этого», или даже «Рассмотрите возможность сделать это». Такой дизайн разбивает всю книгу на более мелкие, конкретные и легко усваиваемые части. В этих трех главах обсуждается широкий спектр тем, от выбора контейнеров до странных особенностей синтаксиса C ++. После этих глав вы лучше поймете контейнеры, лежащие в их основе абстрактные структуры данных и возможные реализации, научитесь некоторым интересным приемам и передовым методам, а также тем вещам, которые вам никогда не следует делать.

Это книга 2001 года, и с тех пор многое изменилось. В элементе 25 говорится о нестандартных контейнерах хеширования, о том, как жаль, что в STL их нет, и о том, как заполнить пустоту. Несмотря на то, что начиная с C ++ 11 у нас есть «неупорядоченные» хэш-контейнеры, этот элемент все же стоит прочитать.

В следующей, четвертой главе рассматриваются итераторы. Он дает хорошее представление об общей концепции и идее, лежащих в основе итераторов, учит некоторым интересным приемам и практическим применениям.

Следующая, пятая глава посвящена алгоритмам. Если вы один из тех, кто боится этого слова, расслабьтесь: здесь нет математики. Вся идея STL заключалась в том, чтобы взять на себя эту ответственность и реализовать эти алгоритмы наилучшим образом. Все, что вам нужно сделать, это правильно их использовать. В этой главе рассматривается большинство алгоритмов STL, показаны типичные ошибки и рассказывается, как их избежать, а также рассказывается о важности именования и лежащей в основе философии (например, о различии между remove и erase ).

Между прочим, если вы действительно один из таких людей, не надо. Алгоритмы потрясающие. Иди, посмотри эту книгу.

В следующей главе рассматриваются функторы, классы функторов и т. Д.. Эти компоненты завершают алгоритмы и поэтому тоже очень важны. Поскольку у нас есть std::function и лямбда-выражения, начиная с C ++ 11, некоторые элементы в этой главе могут показаться истекшими, и да, возможно, они больше не используются на практике, но очень важно понимать, что они скрывают под капотом. новые функции, особенно ламды. И, конечно же, есть проекты, которые застряли на C ++ 98, так что это определенно стоит изучить.

Последняя глава представляет собой краткое изложение STL, дает несколько практических советов и, что более важно, учит философии STL, настраивает правильное мышление. Очень важно иметь правильное руководство в мире STL не только для защиты от ошибок, но и для того, чтобы получить от них максимум.

Эта книга является шедевром по ряду причин. Прежде всего, это великолепная структура. Он состоит из статей, каждая из которых представляет собой статью продолжительностью от 5 до 10 минут, объясняющую одну идею, с обязательным заголовком. Время от времени я беру эту книгу и просматриваю ее содержание:

  • «Пункт 1. Всегда делай это». - "Да, конечно."
  • «Пункт 2: Никогда так не делай». - "Справедливо."
  • «Пункт 3: подумайте об этом». - «Я считаю это».
  • «Пункт 4: Никогда так не делай». - "Эм, я помню, что не должен, но ... почему именно?"

А затем я продолжаю и обновляю свои знания. Так что это тоже как справочник. Не только вы можете, но вам следует возвращаться к этой книге снова и снова, потому что она имеет еще один важный аспект. Это написано для всех. Неважно, новичок вы или опытный, эта книга вам нужна. Вы получите от этого разные вещи.

Эта книга (и другие книги Скотта Мейерса) стала источником отличных вопросов на собеседовании, и все это знают, поэтому перед собеседованием она обязательна. Впервые читаю эту книгу перед первым интервью. В то время у меня не было большого опыта работы с STL, поэтому я просто читал статью, стараясь помнить о них. Я понял, что не читал ее, только через два года после повторного просмотра книги.

Я настоятельно рекомендую прочитать или перечитать эту книгу после того, как у вас появится некоторый опыт работы с C ++ и STL. Написание очень занимательное, заставляет задуматься. Почти каждый предмет начинается с проблемы, очень реальной. Затем он предлагает вам решить эту проблему, предлагает возможное решение. Затем он шаг за шагом приводит к оптимальному решению. Даже если у вас достаточно опыта, вы найдете эту поездку очень интересной и сложной.

Все эти аспекты делают чтение приятным, содержание очень полезным и, как большой бонус, классическими шутками Мейерса. Мой любимый из этой книги:

Изменить наш код чтения файлов для использования istreambuf_iterators настолько просто, что большинству программистов Visual Basic требуется не более двух попыток, чтобы сделать это правильно. - Скотт Мейерс

Финальный счет

Полезно для программистов: 10/10

Релевантность: 9/10

Примеры из реальной жизни: 10/10

Подробный и понятный: 10/10

Стоит покупать: 10/10