стандартная библиотека с++: введение
DESCRIPTION
Стандартная библиотека С++: её структура и возможности.TRANSCRIPT
![Page 1: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/1.jpg)
СТАНДАРТНАЯ БИБЛИОТЕКА С++
Кройтор Михаил
![Page 2: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/2.jpg)
Оглавление
Пример программы Структура стандартной библиотеки С++ Ввод-вывод данных Компоненты STL
Контейнеры Итераторы
Некоторые примитивы библиотеки STL
![Page 3: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/3.jpg)
Пример программы
#include <vector>#include <algorithm>#include <fstream>
int main(){ std::ifstream fin("input.txt"); std::ofstream fout("output.txt");
std::vector<int> v;
std::copy(std::istream_iterator<int>(fin), std::istream_iterator<int>(), std::inserter(v, v.end())); std::sort(v.begin(), v.end()); std::copy(v.begin(), v.end(), std::ostream_iterator<int>(fout, " ")); return 0;}
Считать из файла input.txt массив целых чисел, разделенных пробельными символами. Отсортировать их и записать в файл output.txt.
![Page 4: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/4.jpg)
Структура стандартной библиотеки С++
Стандартная библиотека шаблонов (STL - Standard Template Library)
библиотека для работы с потоками данных обработка исключений стандартная библиотека языка С некоторые дополнительные определения типов,
операторов, функций
•заголовочный файл пишется без расширения; •библиотеки языка С начинаются с буквы с (вместо math.h используется cmath);•Стандартная библиотека С++ объявлена в пространстве имён std.
![Page 5: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/5.jpg)
Ввод-вывод данных
iostream - библиотека для работы с потоками данных. Объявлена в заголовочных файлах ios, fstream, iostream и др. Предоставляет следующие элементы: Базовые шаблонные классы конкретизированные шаблонные классы Стандартные объекты Манипуляторы
Чаще всего работают со стандартными объектами (cin, cout)
![Page 6: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/6.jpg)
Компоненты STL
алгоритм (algorithm): определяет вычислительную процедуру.
контейнер (container): управляет набором объектов в памяти.
итератор (iterator): обеспечивает для алгоритма средство доступа к содержимому контейнера.
функциональный объект (function object): инкапсулирует функцию в объекте для использования другими компонентами.
адаптер (adaptor): адаптирует компонент для обеспечения различного интерфейса.
![Page 7: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/7.jpg)
Контейнеры
Контейнером называют тип данных, предназначенный для хранения объектов (обычно одного типа).
Последовательные контейнеры:•Вектор•Список•Двусторонняя очередь
Ассоциативные контейнеры:•Множество•Хеш-таблица•Множество с повторами•Хеш-таблица с повторами
![Page 8: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/8.jpg)
Итераторы
Итератор – объект, предоставляющий доступ к элементам контейнера. Обладает семантикой указателя.
Основные свойства итератора: Operator разыменования * Оператор инкремента ++
Метод begin() контейнера указывает на первый итератор Метод end() контейнера указывает за последний
итератор Контейнеры содержат объекты, на которые указывают
итераторы из полуинтервала [begin(), end())
![Page 9: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/9.jpg)
Примитивы STL: операторы сравнения
Для поддержки всех операторов сравнения достаточно Подключить библиотеку utility Перегрузить операторы == и <.
Реализация остальных операторов определяется через == и <.
Операторы сравнения определены в пространстве имен std::rel_ops
![Page 10: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/10.jpg)
Примитивы STL:упорядоченная пара
template <class T1, class T2> struct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() : first(T1()), second(T2()) {} pair(const T1& x, const T2& y) : first(x), second(y) {} template <class U, class V> pair (const pair<U,V> &p) : first(p.first), second(p.second) { }};
// для создания упорядоченной пары предлагается функцияtemplate <class T1,class T2>
pair<T1,T2> make_pair (T1 x, T2 y) { return ( pair<T1,T2>(x,y) );}
![Page 11: стандартная библиотека с++: введение](https://reader036.vdocuments.pub/reader036/viewer/2022082606/557ecfadd8b42a8e558b5392/html5/thumbnails/11.jpg)
Примитивы STL:функторы
// классы для определения функторов template <class Arg, class Result>struct unary_function { typedef Arg argument_type; typedef Result result_type;};
template <class Arg1, class Arg2, class Result>struct binary_function { typedef Arg1 first_argument_type; typedef Arg2 second_argument_type; typedef Result result_type;};