C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц Страница 2

Тут можно читать бесплатно C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц. Жанр: Компьютеры и Интернет / Программирование. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте FullBooks.club (Фулбукс) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала


C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц» бесплатно полную версию:

С++ — объектно-ориентированный язык программирования, без которого сегодня немыслима промышленная разработка ПО. В этой замечательной книге описана работа с контейнерами, алгоритмами, вспомогательными классами, лямбда-выражениями и другими интересными инструментами, которыми богат современный С++. Освоив материал, вы сможете коренным образом пересмотреть привычный подход к программированию.
Преимущество издания — в подробном описании стандартной библиотеки шаблонов С++, STL. Ее свежая версия была выпущена в 2017 году. В книге вы найдете более 90 максимально реалистичных примеров, которые демонстрируют всю мощь STL. Многие из них станут базовыми кирпичиками для решения более универсальных задач.
Вооружившись этой книгой, вы сможете эффективно использовать С++17 для создания высококачественного и высокопроизводительного ПО, применимого в различных отраслях.

C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц читать онлайн бесплатно

C++17 STL Стандартная библиотека шаблонов - Яцек Галовиц - читать книгу онлайн бесплатно, автор Яцек Галовиц

взаимных блокировок с применением std::scoped_lock

 Синхронизация конкурентного использования std::cout

 Безопасно откладываем инициализацию с помощью std::call_once

 Отправляем выполнение задач в фоновый режим с применением std::async

 Реализуем идиому «производитель/потребитель» с использованием std::condition_variable

 Реализуем идиому «несколько производителей/потребителей» с помощью std::condition_variable

 Распараллеливание отрисовщика множества Мандельброта в ASCII с применением std::async

 Небольшая автоматическая библиотека для распараллеливания с использованием std::future

Глава 10. Файловая система

 Введение

 Реализуем нормализатор пути файла

 Получаем канонические пути к файлам из относительных путей

 Составляем список всех файлов в каталоге

 Инструмент текстового поиска в стиле grep

 Инструмент для автоматического переименования файлов

 Создаем индикатор эксплуатации диска

 Подбиваем статистику о типах файлов

 Инструмент для уменьшения размера папки путем замены дубликатов символьными ссылками

Об авторе

О рецензенте

Предисловие

Книга по C++, которую вы держите в руках, научит вас максимально эффективно использовать C++17. В ней представлены примеры написания кода, основанные на языке С++ и его стандартной библиотеке шаблонов (Standard Template Library, STL). Поскольку в рассматриваемых здесь примерах STL применяется по максимуму, об этой библиотеке стоит сказать подробнее.

С++ — мощный язык. Он позволяет скрывать сложные решения за простыми высокоуровневыми интерфейсами, но в то же время дает возможность писать низкоуровневый код, для которого важны высокая производительность и незначительное потребление ресурсов. Комитет ISO по стандартизации C++ старательно работает над улучшением стандарта С++.

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

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

В четвертом издании своей книги The C++ Programming Language («Язык программирования С++»), включающем сведения в том числе о С++11, Бьярн Страуструп (Bjarne Stroustrup) пишет: «Пожалуйста, помните, что эти возможности языка и стандартной библиотеки призваны поддержать приемы программирования, позволяющие разрабатывать качественное ПО. Для решения какой-то конкретной задачи их нужно использовать в комбинации друг с другом — как кирпичики из одного набора, — а не отдельно и изолированно друг от друга».

Именно этому посвящена настоящая книга и все приведенные в ней примеры. Они максимально приближены к реальной жизни, причем без ориентации на какие-либо внешние библиотеки — только на STL. Данное обстоятельство значительно упрощает работу, избавляя от утомительной настройки среды. Я очень надеюсь, что представленные здесь примеры привнесут вдохновение в вашу работу с языком С++. Возможно, вы обнаружите, что некоторые из них являются отличными стандартными кирпичиками для решения задач более высокого уровня. 

Темы, рассмотренные в этой книге

Глава 1 «Новые возможности С++17» посвящена новому функционалу, привнесенному стандартом С++17 в сам язык С++. В следующих главах мы уже сконцентрируемся на функционале STL.

Глава 2 «Контейнеры STL» содержит объяснение, как были улучшены разнообразные контейнеры структур данных, предоставляемые STL. После рассмотрения всей коллекции контейнеров мы более детально изучим новые дополнения к ним.

Глава 3 «Итераторы» дает описание итераторов, которые представляют собой очень важную абстракцию и служат «клеем» между алгоритмами STL и контейнерами в моменты их совместного использования. Мы разберем всю концепцию итераторов с нуля, чтобы узнать, как лучше всего применять их в наших программах.

Глава 4 «Лямбда-выражения» посвящена лямбда-выражениям, позволяющим задействовать некоторые интересные приемы программирования. Лямбда-выражения, чьему появлению в стандарте С++11 способствовали чистые функциональные языки программирования, в С++14 и С++17 получили новые возможности.

Глава 5 «Основы работы с алгоритмами STL» знакомит со стандартными алгоритмами STL и способами их применения. Эти алгоритмы легки в использовании, имеют высокую производительность, хорошо протестированы и универсальны. Научившись работать с ними, можно концентрироваться на решениях конкретных задач, а не тратить время на изобретение велосипеда.

Глава 6 «Сложные случаи использования алгоритмов STL» показывает, как объединять простые алгоритмы STL для создания более сложных без необходимости писать один и тот же код несколько раз. В рамках этой главы мы будем строго придерживаться принципов STL.

Глава 7 «Строки, классы потоков и регулярные выражения» содержит подробный обзор классов STL, необходимых для работы со строками, обобщенными потоками ввода/вывода и регулярными выражениями. Мы детально разберем каждый из этих элементов STL.

Глава 8 «Вспомогательные классы» рассказывает, как с помощью STL генерировать случайные числа, измерять время, управлять динамической памятью, изящно сообщать об ошибках, а также о многом другом. Мы рассмотрим очень полезные и переносимые вспомогательные классы, предоставляемые STL для решения подобных задач, и разберем новые классы, появившиеся в С++17.

Глава 9 «Параллелизм и конкуренция» демонстрирует существующие расширения С++, позволяющие реализовать параллелизм и конкуренцию, — эти темы стали очень важны с тех пор, как мы вступили в эру многоядерных процессоров. В С++11 и С++17 появились возможности, значительно облегчающие реализацию программ, работающих на нескольких ядрах и выполняющих задачи одновременно. В рамках данной главы мы и рассмотрим упомянутые концепции.

Глава 10 «Файловая система» показывает: несмотря на то что в STL всегда предоставлялась поддержка чтения отдельных файлов и управления ими, в С++17 появилось много новых, не зависящих от операционной системы способов работы с файловыми путями и просмотра каталогов. В рамках главы мы научимся пользоваться этим инструментарием.

Что вам нужно для работы с книгой

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

Компиляция и запуск примеров

Весь код из этой книги был разработан

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.