Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
STL5 / lab0-introduction / lab0-Introduction-Overview.doc
Скачиваний:
8
Добавлен:
10.04.2015
Размер:
70.66 Кб
Скачать

Стандартная библиотека С++

Что такое стандартная библиотека?

Что должно быть в стандартной библиотеке? Для программиста идеалом было бы найти в библиотеке все интересные, нужные и достаточно общие функции, классы, шаблоны и т. д. Однако вопрос не в том «Что должно быть в некоторойбиблиотеке?», а «Что должно быть встандартнойбиблиотеке?» Ответ «Всё» в первом приближении имеет смысл только для первого вопроса, но не для второго. Стандартная библиотека – это нечто такое, что должно быть обеспечено в каждой реализации языка, чтобы потом все программисты могли на неё опираться.

Стандартная библиотека C++:

  1. Обеспечивает поддержку свойств языка, таких как управление памятью и информация о типах во время выполнения.

  2. Предоставляет информацию о зависящих от реализации аспектах языка, таких, например, как максимальное значение float.

  3. Предоставляет функции, которые не могут быть написаны оптимально для всех систем собственно на языке C++, напримерsqrt()илиmemmove().

  4. Предоставляет программисту нетривиальные средства, на которые он сможет рассчитывать, заботясь о переносимости, такие, как списки, отображения (ассоциативные массивы), функции сортировки и потоки ввода/вывода.

  5. Даёт основу для расширения своих возможностей, такую как соглашения и средства поддержки, которые позволяют пользователю обеспечить ввод/вывод для определяемых им типов в стиле ввода вывода для встроенных типов.

  6. Служит общим фундаментом для других библиотек.

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

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

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

Ограничения

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

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

  2. Прямо или косвенно использоваться всеми программистами для решения всех задач, которые связаны с целями библиотеки.

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

  4. Быть независимыми от алгоритмов или предоставлять пользователю возможность задавать алгоритм в качестве аргумента.

  5. Быть примитивными в математическом смысле. То есть компонента, которая играет две мало связанные между собой роли, будет почти наверняка вызывать лишние затраты по сравнению с двумя отдельными компонентами, призванными играть каждый свою одну чётко определённую роль.

  6. Быть удобными, эффективными и достаточно безопасными при использовании в большинстве типичных случаев.

  7. Быть завершёнными в том, что делают. Библиотека может оставить множество функций другим библиотекам, но если уж она взялась за какую-то задачу, то должна обеспечить достаточную функциональность, чтобы отдельным пользователям и разработчикам не приходилось заменять её средства.

  8. Хорошо сочетаться и дополнять встроенные типы и операции.

  9. Быть безопасными по умолчанию с точки зрения типов.

  10. Поддерживать общепринятые стили программирования.

  11. Быть способными к расширению, чтобы работать с типами, определёнными пользователем, так же, как со встроенными типами и типами из библиотеки.

Соседние файлы в папке lab0-introduction