Читаем C++17 STL Стандартная библиотека шаблонов полностью

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

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

<p id="AutBody_Root03"><strong>Что вам нужно для работы с книгой</strong></p>

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

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

Весь код из этой книги был разработан и протестирован в операционных системах Linux и MacOS с использованием компиляторов GNU C++, g++, LLVM C++, clang++.

Можно сгенерировать пример из командной оболочки с помощью g++ следующей командой:

$ g++ -std=c++1z -o recipe_app recipe_code.cpp

Аналогичная команда с использованием clang++:

$ clang++ -std=c++1z –o recipe_app recipe_code.cpp

Оба примера командной строки предполагают, что recipe_code.cpp является текстовым файлом, содержащим ваш код С++. После компиляции программы исполняемый бинарный файл получит имя recipe_app, его можно будет запустить следующим образом:

$ ./recipe_app

Во многих примерах мы считываем все содержимое файлов через стандартный ввод. В таких случаях мы используем стандартные каналы UNIX и команду cat, чтобы направить содержимое файла в наше приложение:

$ cat file.txt | ./recipe_app

Это работает в ОС Linux и MacOS. В оболочке Microsoft Windows команда выглядит так:

> recipe_app.exe < file.txt

Если вы запускаете программы не из оболочки, а из интегрированной среды разработки Microsoft Visual Studio, то вам нужно открыть вкладку Configuration properties►Debugging (Свойства конфигурации►Отладка) и добавить фрагмент < file.txt в командную строку приложения, которое запускает Visual Studio.

Предупреждения для первопроходцев

Возможно, некоторые примеры из этой книги у вас не будут компилироваться. Все зависит от того, какая часть C++17 STL реализована в вашем дистрибутиве STL.

При написании книги приходилось добавлять префикс пути experimental/ к заголовкам и . Кроме того, в каталоге experimental/ вашего дистрибутива STL могут находиться дополнительные заголовочные файлы, например algorithm, numeric и т.д., в зависимости от того, насколько новым и стабильным является дистрибутив.

Это верно и для пространств имен, поддерживающих новейшие возможности. Элементы библиотеки, включенные в экспериментальную часть STL, обычно экспортируются внутрь пространства имен std::experimental (а не std). 

<p id="AutBody_Root04">Для кого предназначено издание</p>

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

Кроме того, книга будет вам полезна, если вы узнали себя в одном из следующих описаний:

□ вы изучили основы С++, но теперь не знаете, что делать дальше, поскольку разница между вашими знаниями и знаниями профессионала — разработчика на С++ все еще велика;

□ вы хорошо знаете С++, но плохо ориентируетесь в STL;

□ вы знаете С++ по одному из старых стандартов, C++98, C++11 или C++14. Как бы давно вы ни использовали С++ в последний раз, книга познакомит вас со множеством новых возможностей STL. 

<p id="AutBody_Root05">Разделы</p>

В издании вы найдете несколько заголовков, встречающихся чаще других («Как это делается» и «Как это работает»). В этих разделах даны четкие инструкции, как работать с примером.

Как это делается

В этом подразделе описываются шаги, необходимые для выполнения примера.

Как это работает

Здесь обычно содержится подробное объяснение действий из предыдущего подраздела.

Дополнительная информация

В этот подраздел включены дополнительные сведения о примере, позволяющие читателю более детально ознакомиться с темой. 

<p id="AutBody_Root06">Условные обозначения</p>

В книге информация разного рода оформлена различными способами. Рассмотрим несколько вариантов оформления и их значение.

Похожие книги