Litvek - онлайн библиотека >> Яцек Галовиц >> Базы данных >> C++17 STL Стандартная библиотека шаблонов >> страница 3
реализовать параллелизм и конкуренцию, — эти темы стали очень важны с тех пор, как мы вступили в эру многоядерных процессоров. В С++11 и С++17 появились возможности, значительно облегчающие реализацию программ, работающих на нескольких ядрах и выполняющих задачи одновременно. В рамках данной главы мы и рассмотрим упомянутые концепции.

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

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

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


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

Весь код из этой книги был разработан и протестирован в операционных системах 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/ к заголовкам <execution_policy> и <filesystem>. Кроме того, в каталоге experimental/ вашего дистрибутива STL могут находиться дополнительные заголовочные файлы, например algorithm, numeric и т.д., в зависимости от того, насколько новым и стабильным является дистрибутив.

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

Для кого предназначено издание

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

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

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

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

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

Разделы

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


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

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


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

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


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

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

Условные обозначения

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

Код в тексте, имена баз данных, каталогов и файлов, а также расширения файлов, пути к файлам, ненастоящие (dummy) URL, пользовательский ввод и имена пользователей Twitter выделяются так: «Следующий шаг — редактирование файла build.properties».

Блок кода выглядит следующим образом:


my_wrapper<T1, T2, T3> make_wrapper(T1 t1, T2 t2, T3 t3)

{

  return {t1, t2, t3};

}


Новые термины и важные слова выделены курсивом. Слова, которые вы видите на экране, например меню или диалоговые окна, выглядят в тексте так: «После завершения нажмите кнопку Activate (Активизировать)».


 C++17 STL Стандартная библиотека шаблонов. Иллюстрация № 1 Предупреждения и важные примечания оформлены так.

 C++17 STL Стандартная библиотека шаблонов. Иллюстрация № 2 Советы и приемы оформлены таким образом.

Загрузка примеров кода

Файлы с примерами кода для книги можно скачать по адресу https://github.com/PacktPublishing/Cpp17-STL-Cookbook. Для этого выполните следующие шаги.

1. Перейдите по указанному выше адресу.

2. Нажмите кнопку Clone or Download (Клонировать или скачать).

3. На открывшейся панели выберите ссылку Download ZIP (Скачать Zip).


После загрузки файла убедитесь, что распаковали или извлекли каталог с помощью последней версии одной из следующих программ:

□ WinRAR/7-Zip для Windows;

□ Zipeg/iZip/UnRarX для Mac;

□ 7-Zip/PeaZip для Linux.


Мы предлагаем и другие пакеты с кодом из нашего обширного каталога книг и видеороликов, доступного на https://github.com/PacktPublishing/. Обратите на них внимание! 

Глава 1 Новые возможности С++17

В этой главе:

□ применение структурированных привязок (декомпозиции) для распаковки набора возвращаемых значений;

□ ограничение области видимости переменных в выражениях if и switch;

□ новые правила инициализатора с фигурными скобками;

□ разрешение конструктору автоматически вывести полученный тип класса шаблона;

□ упрощение принятия решений во
Litvek: лучшие книги месяца
Топ книга - Полный курс НЛП [Майкл Холл] - читаем полностью в LitvekТоп книга - Лучшее в нас [Стивен Пинкер] - читаем полностью в LitvekТоп книга - Безлюдное место. Как ловят маньяков в России [Саша Сулим] - читаем полностью в LitvekТоп книга - Роман с самим собой [Татьяна Владимировна Мужицкая] - читаем полностью в LitvekТоп книга - Харизма [Патрик Кинг] - читаем полностью в LitvekТоп книга - Законы привлекательности [Патрик Кинг] - читаем полностью в LitvekТоп книга - Дар смерти (начало) [Елена Валерьевна Голунова] - читаем полностью в LitvekТоп книга - Новая карта мира. Энергетические ресурсы, меняющийся климат и столкновение наций [Дэниел Ергин] - читаем полностью в Litvek