стандартная библиотека с++: введение
Post on 15-Jun-2015
5.896 Views
Preview:
DESCRIPTION
TRANSCRIPT
СТАНДАРТНАЯ БИБЛИОТЕКА С++
Кройтор Михаил
Оглавление
Пример программы Структура стандартной библиотеки С++ Ввод-вывод данных Компоненты STL
Контейнеры Итераторы
Некоторые примитивы библиотеки STL
Пример программы
#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.
Структура стандартной библиотеки С++
Стандартная библиотека шаблонов (STL - Standard Template Library)
библиотека для работы с потоками данных обработка исключений стандартная библиотека языка С некоторые дополнительные определения типов,
операторов, функций
•заголовочный файл пишется без расширения; •библиотеки языка С начинаются с буквы с (вместо math.h используется cmath);•Стандартная библиотека С++ объявлена в пространстве имён std.
Ввод-вывод данных
iostream - библиотека для работы с потоками данных. Объявлена в заголовочных файлах ios, fstream, iostream и др. Предоставляет следующие элементы: Базовые шаблонные классы конкретизированные шаблонные классы Стандартные объекты Манипуляторы
Чаще всего работают со стандартными объектами (cin, cout)
Компоненты STL
алгоритм (algorithm): определяет вычислительную процедуру.
контейнер (container): управляет набором объектов в памяти.
итератор (iterator): обеспечивает для алгоритма средство доступа к содержимому контейнера.
функциональный объект (function object): инкапсулирует функцию в объекте для использования другими компонентами.
адаптер (adaptor): адаптирует компонент для обеспечения различного интерфейса.
Контейнеры
Контейнером называют тип данных, предназначенный для хранения объектов (обычно одного типа).
Последовательные контейнеры:•Вектор•Список•Двусторонняя очередь
Ассоциативные контейнеры:•Множество•Хеш-таблица•Множество с повторами•Хеш-таблица с повторами
Итераторы
Итератор – объект, предоставляющий доступ к элементам контейнера. Обладает семантикой указателя.
Основные свойства итератора: Operator разыменования * Оператор инкремента ++
Метод begin() контейнера указывает на первый итератор Метод end() контейнера указывает за последний
итератор Контейнеры содержат объекты, на которые указывают
итераторы из полуинтервала [begin(), end())
Примитивы STL: операторы сравнения
Для поддержки всех операторов сравнения достаточно Подключить библиотеку utility Перегрузить операторы == и <.
Реализация остальных операторов определяется через == и <.
Операторы сравнения определены в пространстве имен std::rel_ops
Примитивы 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) );}
Примитивы 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;};
top related