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

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Стандартная библиотека C++ — это коллекция классов и функций языка программирования C++, которые написаны на базовом языке и являются частью стандарта C++ ISO[1].

Обзор[править]

Стандартная библиотека C++ предоставляет несколько общих контейнеров, функции для использования и манипулирования этими контейнерами, объекты функций, общие строки и потоки (включая интерактивный и файловый ввод-вывод), поддержку некоторых возможностей языка, а также функции для таких распространенных задач, как нахождение квадратного корня из числа. Стандартная библиотека C++ также включает в себя большинство заголовков стандартной библиотеки ISO C, заканчивающихся на «.h», но их использование устарело (отменено с 2003 года).[2] Ни один другой заголовок в стандартной библиотеке C++ не заканчивается на «.h». Функции Стандартной библиотеки C++ объявляются в пространстве имён std.

Стандартная библиотека C++ основана на соглашениях, введенных Библиотеке стандартных шаблонов STL, и испытала влияние исследований в области обобщенного программирования и разработчиков STL, таких как Александр Степанов и Менг Ли.[3][4] Хотя стандартная библиотека C++ и STL имеют много общих черт, ни одна из них не является строгим супермножеством другой.

Примечательной особенностью стандартной библиотеки C++ является то, что она не только определяет синтаксис и семантику общих алгоритмов, но и предъявляет требования к их производительности.[5] Эти требования к производительности часто соответствуют известному алгоритму, использование которого ожидается, но не обязательно. В большинстве случаев для этого требуется линейное время O(n) или линейно-логарифмическое время O(n log n), но в некоторых случаях допускаются более высокие границы, например, квазилинейное время O(n log2 n) для стабильной сортировки, чтобы позволить сортировку слиянием по-месту (in-place). Ранее требовалось, чтобы сортировка занимала в среднем только O(n log n), что позволяло использовать быструю сортировку (quicksort), которая на практике достаточно быстра, но имеет низкую производительность в худшем случае. Но потом был введен introsort для обеспечения как быстрой средней производительности, так и оптимальной сложности в худшем случае, а начиная с C++11 сортировка гарантированно является в худшем случае линейной.

См. также[править]

Источники[править]

  1. ISO/IEC 14882:2003(E) Programming Languages — C++ § 17-27
  2. ISO/IEC 14882:2003(E) Programming Languages — C++ §D.5
  3. The Design and Evolution of C++ §8.5. — Addison Wesley, 1994. — ISBN 0-201-54330-3.
  4. Alexander Stepanov, Meng Lee The Standard Template Library. HP Labs (1 August 1994). Проверено 22 октября 2017.
  5. «Обобщенные алгоритмы», Давид Массер

Ссылки[править]

Runi.svg Одним из источников этой статьи является статья в википроекте «Руниверсалис» («Руни», руни.рф), называющаяся «Стандартная библиотека C++».
Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC BY-SA.
Всем участникам Руниверсалиса предлагается прочитать «Обращение к участникам Руниверсалиса» основателя Циклопедии и «Почему Циклопедия?».