Стенли Липпман - Язык программирования C++. Пятое издание

Тут можно читать онлайн Стенли Липпман - Язык программирования C++. Пятое издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом Вильямс, год 2014. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык программирования C++. Пятое издание
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс
  • Год:
    2014
  • Город:
    Москва
  • ISBN:
    978-5-8459-1839-0
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание

Язык программирования C++. Пятое издание - описание и краткое содержание, автор Стенли Липпман, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!
Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под
. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.
С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.
Стенли Б. Липпман Жози Лажойе Барбара Э. Му • Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием
• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования
• Изучите принципы и узнайте почему язык С++11 работает именно так
• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть
• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем
• Освойте лучшие методики программирования и закрепите на практике изученный материал
Исходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com

Язык программирования C++. Пятое издание - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C++. Пятое издание - читать книгу онлайн бесплатно, автор Стенли Липпман
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Глава 17

Специализированные средства библиотек

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

17.1. Тип tuple

картинка 637Шаблон tuple(кортеж) подобен шаблону pair(пара) (см. раздел 11.2.3). У каждого экземпляра шаблона pairмогут быть члены разных типов, но их всегда только два. Члены экземпляров шаблона tupleтакже могут иметь разные типы, но количество их может быть любым. Каждый конкретный экземпляр шаблона tupleимеет фиксированное количество членов, но другой экземпляр типа может отличаться количеством членов.

Тип tupleособенно полезен, когда необходимо объединить некие данные в единый объект, но нет желания определять структуру для их хранения. Список операций, поддерживаемых типом tuple, приведен в табл. 17.1. Тип tuple, наряду с сопутствующими ему типами и функциями, определен в заголовке tuple.

Таблица 17.1. Операции с кортежами

tuple t; t— кортеж с количеством и типами членов, заданными списком T1...Tn. Члены инициализируются по умолчанию (см. раздел 3.3.1)
tuple t(v1, v2, ..., vn); t— кортеж с типами T1...Tn, каждый член которого инициализируется соответствующим инициализатором vi. Этот конструктор является явным (см. раздел 7.5.4)
make_tuple(v1, v2, ..., vn) Возвращает кортеж, инициализированный данными инициализаторов. Тип кортежа выводится из типов инициализаторов
t1 == t2 t1 != t2 Два кортежа равны, если у них совпадает количество членов и каждая пара членов равна. Для сравнения используется собственный оператор ==каждого члена. Как только найдены неравные члены, последующие не проверяются
t1 опсравн t2 Операторы сравнения кортежей используют алфавитный порядок (см. раздел 9.2.7). У кортежей должно быть одинаковое количество членов. Члены кортежа t1сравниваются с соответствующими членами кортежа t2при помощи оператора <
get(t) Возвращает ссылку i-ю переменную-член кортежа t; если t— это l-значение, то результат — ссылка на l-значение; в противном случае — ссылка на r-значение. Все члены кортежа являются открытыми ( public)
tuple_size< типКортежа >::value Шаблон класса, экземпляр которого может быть создан по типу кортежа и имеет public constexpr staticпеременную-член valueтипа size_t, содержащую количество членов в указанном типе кортежа
tuple_elementтипКортежа >::type Шаблон класса, экземпляр которого может быть создан по целочисленной константе и типу кортежа, имеющий открытый член type, являющийся типом указанного члена в кортеже указанного типа

Язык программирования C Пятое издание - изображение 638Тип tupleможно считать структурой данных на "скорую руку".

17.1.1. Определение и инициализация кортежей

При определении кортежа следует указать типы каждого из его членов:

tuple threeD; // все три члена установлены в 0

tuple, int, list>

someVal("constants", {3.14, 2.718}, 42, {0,1,2,3,4,5});

При создании объекта кортежа можно использовать либо стандартный конструктор кортежа, инициализирующий каждый член по умолчанию (см. раздел 3.3.1), либо предоставить инициализатор для каждого члена, как при инициализации кортежа someVal. Этот конструктор кортежа является явным (см. раздел 7.5.4), поэтому следует использовать прямой синтаксис инициализации:

tuple threeD = {1,2,3}; // ошибка

tuple threeD{1,2,3}; // ok

В качестве альтернативы, подобно функции make_pair()(см. раздел 11.2.3), можно использовать библиотечную функцию make_tuple(), создающую объект кортежа:

// кортеж, представляющий транзакцию приложения книжного магазина:

// ISBN, количество, цена книги

auto item = make_tuple("0-999-78345-X", 3, 20.00);

Подобно функции make_pair(), функция make_tuple()использует типы, предоставляемые в качестве инициализаторов, для вывода типа кортежа. В данном случае кортеж itemимеет тип tuple.

Доступ к членам кортежа

В типе pairвсегда есть два члена, что позволяет библиотеке присвоить им имена first(первый) и second(второй). Для типа tupleтакое соглашение об именовании невозможно, поскольку у него нет ограничений на количество членов. В результате члены остаются безымянными. Вместо имен для обращения к членам кортежа используется библиотечный шаблон функции get. Чтобы использовать шаблон get, следует определить явный аргумент шаблона (см. раздел 16.2.2), задающий позицию члена, доступ к которому предстоит получить. Функция get()получает объект кортежа и возвращает ссылку на его заданный член:

auto book = get<0>(item); // возвращает первый член item

auto cnt = get<1>(item); // возвращает второй член item

auto price = get<2>(item)/cnt; // возвращает последний член item

get<2>(item) *= 0.8; // применяет 20%-ную скидку

Значение в скобках должно быть целочисленным константным выражением (см. разделе 2.4.4). Как обычно, счет начинается с 0, а значит, первым членом будет get<0>.

Если подробности типов в кортеже неизвестны, для выяснения количества и типов его членов можно использовать два вспомогательных шаблона класса:

typedef decltype(item) trans; // trans - тип кортежа item

// возвращает количество членов в объекте типа trans

size_t sz = tuple_size::value; // возвращает 3

// cnt имеет тот же тип, что и второй член item

tuple_element<1, trans>::type cnt = get<1>(item); // cnt - это int

Для использования шаблонов tuple_sizeи tuple_elementнеобходимо знать тип объекта кортежа. Как обычно, проще всего определить тип объекта при помощи спецификатора decltype(см. раздел 2.5.3). Здесь спецификатор decltypeиспользуется для определения псевдонима для типа кортежа item, который и используется при создании экземпляров обоих шаблонов.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стенли Липпман читать все книги автора по порядку

Стенли Липпман - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C++. Пятое издание отзывы


Отзывы читателей о книге Язык программирования C++. Пятое издание, автор: Стенли Липпман. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x