Главная » Просмотр файлов » Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)

Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033), страница 107

Файл №1004033 Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)) 107 страницаБьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033) страница 1072018-10-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 107)

Проектные решения стандартной библиотеки. Что должно входить в стандартную библиотеку языка С++? Для программиста было бы идеальным найти в библиотеке любые интересные и значимые классы, функции, шаблоны и т.д. Но вопрос задан по отношению именно к стандартной библиотеке, а не по отношению к некоторой библиотеке вообще, так что ответ »Все!» здесь неуместен. Стандартная библиотека должна включать в себя только то, что каждая реализация языка могла бы предоставить надехснейшим образом и на что кюкаый программист мог бы всегда опереться.

В итоге, стандартная библиотека языка С++: 1. Обеспечивает поддержку таких средств языка, как управление памятью (В6.2.6) н механизм КТТ1 (В15.4). 2. Предоставляет информацию о зависящих от реализации аспектах языка, таких как, например, максимальное значение типа Яоаг (в22.2). 3. Обеспечивает программиста функциями, которые невозможно одинаково оптимально выполнить лишь средствами самого языка, например щиО (В22.3) и теттоге() (519.4.6). Глава 16.

Организация библиотеки и контейнеры 518 4. Реализует такие непримитивные и переносимые средства, как списки (817.2.2), ассоциативные массивы (отображения) (817.4.!), функции сортировки (818.7.1) и потоки ввода/вывода (глава 21). 5. Формулирует архитектурные принципы, позволяющие расширять базовые средства библиотеки, например, соглашения и средства поддержки, позволяющие программисту обеспечивать ввод/вывод пользовательских типов в стиле ввода/вывода встроенных типов. б. Служит общим фундаментом для других библиотек. Кроме того, стандартная библиотека предостааляет некоторые программные средства, вроде генератора случайных чисел 522.7), просто потому, что так принято делать (и это удобно). Дизайн стандартной библиотеки в основном определялся последними тремя из перечисленных выше ее ролей.

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

Если бы нх в ней не было, то независимые библиотеки могли бы взаимодействовать лишь только посредством встроенных типов. В то же время, никакой графики или распознавания графических образов в стандартной библиотеке нет. Это все безусловно полезные и широко применимые средства, но они редко когда используются непосредственно прн взаимодействии разных библиотек. В итоге, если некоторое средство не нужно для поддержки перечисленных ролей, его можно не включать в стандартную библиотеку. Это открывает другим библиотекам шанс предоставить конкурентоспособную реализацию такого средства. 16.1.1.

Проектные ограничения Отводимые стандартной библиотеке роли накладывают несколько ограничений на ее дизайн. Средства стандартной библиотеки языка С++ спроектированы так, чтобы они; 1. Были важными и доступными для каждого студента и профессионального программиста, включая разработчиков других библиотек. 2. Использовались прямо или косвенно любым программистом для решения любой задачи, относящейся к области стандартной библиотеки.

3. Были достаточно эффективными, чтобы при реализации иных библиотек эти средства могли составить естественную альтернативу функциям, классам и шаблонам, программируемым вручную. 4. Были независимыми от стратегии реализации (алгоритма) или позволяли пользователю задавать стратегию в качестве аргумента.

1б.1. Проектные решения стандартной библиотеки. 519 5. Были примитивными в математическом смысле, ибо эффективность компонента библиотеки, выполняющего две слабо связанные роли, наверняка будет хуже эффективности компонентов, каждый из которых выполняет лишь одну из ролей. 6. Были удобными, эффективными и безопасными для применения в типичных случаях. 7. Были полностью реализованными. Другим библиотекам можно оставить массу функциональности, но то, что реализовано в стандартной библиотеке, не должно нуждаться в переделках и дополнительной реализации базовых возможностей. 8.

Могли сочетаться со встроенными типами и операциями. 9. Были по умолчанию безопасными в отношении типов. 10. Поддерживали общепринятые стили программирования. 11. Были гибкими и расширяемыми и могли работать с пользовательскими типами так же, как со встроенными типами и типами из стандартной библиотеки. Например, жесткое кодирование критерия сравнения внутри функции сортировки неприемлемо, так как сортировка может производиться согласно разным критериям. Вот почему функция сортировки 9югг(1 из стандартной библиотеки языка С принимает функцию сравнения в качестве аргумента, а не полагается на что-то фиксированное вроде операции < (97.7). С другой стороны, излишние затраты на вызов функции при каждом акте сравнения компрометируют дхегг() с точки зрения ее роли готового блока для построения других библиотек. Почти для любых типов данных легко выполнить сравнение без лишних затрат на вызов функции.

Велики ли эти затраты? В большинстве случаев — нет. Но в то же время, для некоторых алгоритмов затраты на вызов функции могут составить львиную долю от полного времени работы, что заставит пользователя искать альтернативы. Методика предоставления алгоритма сравнения посредством параметра шаблона, описанная в 913.4, решает проблему. Данный пример показывает конкуренцию между эффективностью и универсальностью. От стандартной библиотеки требуется не просто выполнять поставленные перед ней задачи, но делать это достаточно эффективно, чтобы не провоцировать пользователя на реализацию собственных решений. В противном случае, разработчики более продвинутых и специализированных средств просто вынуждены будут обходить стандартную библиотеку стороной, чтобы оставаться конкурентоспособными.

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

Однако компоненты для решения общих (часто встречающихся) и непримитивных задач могут быть добавлены к стандартной библиотеке помимо, а не вместо примитивных средств. Культ ортогональности не должен помешать нам сделать жизнь новичка или случайного пользователя стандартной библиотеки простой и удобной. Он не должен заставлять нас мириться с неясным и опасным умолчательным поведением компонентов библиотеки. Глава 16. Организация библиотеки и контейнеры 520 16.1.2. Организация стандартной библиотеки Контейнеры <яесгог> одномерный массив элементов Т ~ 916.3 <гег> 917 2.2 двусвязный список элементов Т ~ <еедие> 9 17.2.3 двусторонняя очередь элементов Т ~ <диене> 917.3.2 очередь элементов Т 917.3.1 ' <маса> <нщу> стек элементов Т ассоциативный массив элементов Т 917.4.1 917.4.3 множество элементов Т <зег> множество булевских переменных 917.5.3 <оттает> Ассоциативные контейнеры итиЫитар и нтнЫтег находятся в файлах <гиар> и <зег>, соответственно.

Контейнер ргтогтгу диене объявляется в <диеие>. Заголовочный файл <итеитогу> также содержит шаблон анто ргг, призванный сгладить взаимодействие указателей и исключений Я14.4.2). Итервторы Глава 19 <Фегатог> итераторы и поддержка итераторов Средства стандартной библиотеки определены в пространстве имен зяб и расположены в некотором наборе заголовочных файлов, реализующих большую часть этих средств. Перечисление этих заголовочных файлов дает представление о стандартной библиотеке и поясняет направление ее рассмотрения в настоящей и последуипцих главах книги.

Ниже в данном разделе мы приводим список заголовочных файлов стандартной библиотеки, сгруппированный по функциональности, и сопровождаемый краткими пояснениями и ссылками на разделы книги, в которых они рассматриваются. Стандартный заголовочный файл, начинающийся на букву с, эквивалентен соответствующему заголовочному файлу стандартной библиотеки языка С. Для каждого файла <Х.й>, определяющего часть стандартной библиотеки языка С в глобальном пространстве имен н в пространстве имен згсг, имеется заголовочный файл <сХ>, определяющий те же имена исключительно в пространстве имен згсг (см. . 99.2.2). 16.1. Проектные решения стандартной библиотеки.

Характеристики

Тип файла
DJVU-файл
Размер
8,84 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее