стандартная библиотека с++: введение

11
СТАНДАРТНАЯ БИБЛИОТЕКА С++ Кройтор Михаил

Upload: mcroitor

Post on 15-Jun-2015

5.896 views

Category:

Education


0 download

DESCRIPTION

Стандартная библиотека С++: её структура и возможности.

TRANSCRIPT

Page 1: стандартная библиотека с++: введение

СТАНДАРТНАЯ БИБЛИОТЕКА С++

Кройтор Михаил

Page 2: стандартная библиотека с++: введение

Оглавление

Пример программы Структура стандартной библиотеки С++ Ввод-вывод данных Компоненты STL

Контейнеры Итераторы

Некоторые примитивы библиотеки STL

Page 3: стандартная библиотека с++: введение

Пример программы

#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: стандартная библиотека с++: введение

Структура стандартной библиотеки С++

Стандартная библиотека шаблонов (STL - Standard Template Library)

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

операторов, функций

•заголовочный файл пишется без расширения; •библиотеки языка С начинаются с буквы с (вместо math.h используется cmath);•Стандартная библиотека С++ объявлена в пространстве имён std.

Page 5: стандартная библиотека с++: введение

Ввод-вывод данных

iostream - библиотека для работы с потоками данных. Объявлена в заголовочных файлах ios, fstream, iostream и др. Предоставляет следующие элементы: Базовые шаблонные классы конкретизированные шаблонные классы Стандартные объекты Манипуляторы

Чаще всего работают со стандартными объектами (cin, cout)

Page 6: стандартная библиотека с++: введение

Компоненты STL

алгоритм (algorithm): определяет вычислительную процедуру.

контейнер (container): управляет набором объектов в памяти.

итератор (iterator): обеспечивает для алгоритма средство доступа к содержимому контейнера.

функциональный объект (function object): инкапсулирует функцию в объекте для использования другими компонентами.

адаптер (adaptor): адаптирует компонент для обеспечения различного интерфейса.

Page 7: стандартная библиотека с++: введение

Контейнеры

Контейнером называют тип данных, предназначенный для хранения объектов (обычно одного типа).

Последовательные контейнеры:•Вектор•Список•Двусторонняя очередь

Ассоциативные контейнеры:•Множество•Хеш-таблица•Множество с повторами•Хеш-таблица с повторами

Page 8: стандартная библиотека с++: введение

Итераторы

Итератор – объект, предоставляющий доступ к элементам контейнера. Обладает семантикой указателя.

Основные свойства итератора: Operator разыменования * Оператор инкремента ++

Метод begin() контейнера указывает на первый итератор Метод end() контейнера указывает за последний

итератор Контейнеры содержат объекты, на которые указывают

итераторы из полуинтервала [begin(), end())

Page 9: стандартная библиотека с++: введение

Примитивы STL: операторы сравнения

Для поддержки всех операторов сравнения достаточно Подключить библиотеку utility Перегрузить операторы == и <.

Реализация остальных операторов определяется через == и <.

Операторы сравнения определены в пространстве имен std::rel_ops

Page 10: стандартная библиотека с++: введение

Примитивы 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: стандартная библиотека с++: введение

Примитивы 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;};