Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
для шпор(печатаем 8 стр на листе).docx
Скачиваний:
1
Добавлен:
25.12.2019
Размер:
2.86 Mб
Скачать

27. Стандартная библиотека. Организация стандартной библиотеки

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

Общая структура

Стандартная библиотека C++ включает в себя набор средств, которые должны быть доступны для любой реализации языка, чтобы обеспечить программистам удобное пользование языковыми средствами и создать базу для разработки как прикладных приложений самого широкого спектра, так и специализированных библиотек. Стандартная библиотека С++ включает в себя часть стандартной библиотеки C. Стандарт C++ содержит нормативную ссылку на стандарт C от 1990 года и не определяет самостоятельно те функции стандартной библиотеки, которые заимствуются из стандартной библиотеки C.

Доступ к возможностям стандартной библиотеки C++ обеспечивается с помощью включения в программу (посредством директивы #include) соответствующих стандартных заголовочных файлов. Средства стандартной библиотеки объявляются как входящие в пространство имён std. Заголовочные файлы, имена которых соответствуют шаблону «cX», где X — имя заголовочного файла стандартной библиотеки C без расширения (cstdlib, cstring, cstdio и пр.), содержат определения, соответствующие данной части стандартной библиотеки C, при этом программист может воспользоваться заголовочными файлами с именами по шаблону «cX.h» (добавлено стандартное расширение заголовочных файлов C «.h»), в которых те же средства определены как относящиеся к глобальному пространству имён.

Организация стандартной библиотеки

Приведем список заголовочных файлов STL, сгруппированный по функциональности

28. Тип вектора. Вложенные типы. Итераторы. Доступ к элементам

Контейнерный тип vector используется как пример законченного стандартного контейнера. Рассмотрим типы, итераторы и доступ к элементам контейнера

памятью.

Об итераторах можно думать, как об указателях на элементы контейнеров.

Доступ к элементам

Доступ к отдельному элементу вектора можно получить, используя операции, описанные в таблице ниже. Первый элемент имеет индекс 0, последний — size() - 1

Выражение

Возвращаемый тип

Проверка границы?

v.at(i)

T& или const T& для элемента i

Возможен выброс исключения out_of_range

v[i]

T& или const T& для элемента i

Неопределенное поведение при i >= v.size()

v.front()

T& или const T& для первого элемента

Неопределенное поведение при v.empty() == true

v.back()

T& или const T& для последнего элемента

Неопределенное поведение при v.empty() == true

Где v — это объект типа (м.б const) vector<T>, а i — индекс необходимого элемента вектора.

29.Тип Вектора. Конструкторы. Операции со стеком. Списочные операции. Размеры и емкость.

Рассмотрим контейнер типа vector: конструкторы, операции со стеком, списочные операции, размеры и емкость

Конструкторы:

Метод

Описание

Сложность

vector::vector

Конструктор по умолчанию. Не принимает аргументов, создает новый экземпляр вектора

O(1) (выполняется за константное время)

vector::vector(const vector& c)

Конструктор копии по умолчанию. Создает копию вектора c

O(n) (выполняется за линейное время, пропорциональное размеру вектора c)

vector::vector(size_type n, const T& val = T())

Создает вектор с n объектами. Если val объявлена, то каждый из этих объектов будет инициализирован ее значением; в противном случае объекты получат значение конструктора по умолчанию типа T.

O(n)

vector::vector(input_iterator start, input_iterator end)

Cоздает вектор из элементов, лежащих между start и end

O(n)

Размер и емкость

vector::empty

Возвращает true, если вектор пуст

O(1)

vector::size

Возвращает количество элементов в вектора

O(1)

vector::max_size

Возвращает максимально возможное количество элементов в векторе

O(1)

vector::reserve

Устанавливает минимально возможное количество элементов в векторе

O(n)

vector::capacity

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

O(1)

vector::shrink_to_fit

Уменьшает количество используемой памяти за счет освобождения неиспользованной

O(1)