SlideShare a Scribd company logo
1 of 11
СТАНДАРТНАЯ
БИБЛИОТЕКА С++
Кройтор Михаил
Оглавление





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



Некоторые примитивы библиотеки STL
Пример программы
#include <vector>
#include <algorithm>
#include <fstream>
int main(){
std::ifstream fin("input.txt");
std::ofstream fout("output.txt");

Считать из файла input.txt массив
целых чисел, разделенных
пробельными символами.
Отсортировать их и записать в
файл 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;
Структура стандартной библиотеки С++







Стандартная библиотека шаблонов (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;
};

More Related Content

What's hot

Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Dima Dzuba
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
 
Субъекторная модель
Субъекторная модельСубъекторная модель
Субъекторная модельcorehard_by
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программированияAlex.Kolonitsky
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Dima Dzuba
 
5. java lecture io
5. java lecture io5. java lecture io
5. java lecture ioMERA_school
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторовDEVTYPE
 
функции в Java script
функции в Java scriptфункции в Java script
функции в Java scriptViktor Andreev
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Sergey Platonov
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о BoostSergey Platonov
 
Михаил Давыдов — JavaScript: Базовые знания
Михаил Давыдов — JavaScript: Базовые знанияМихаил Давыдов — JavaScript: Базовые знания
Михаил Давыдов — JavaScript: Базовые знанияYandex
 
Михаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияМихаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияYandex
 

What's hot (20)

Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
PHP7 - что ожидать?
PHP7 - что ожидать?PHP7 - что ожидать?
PHP7 - что ожидать?
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
 
лек9 10
лек9 10лек9 10
лек9 10
 
Python: ввод и вывод
Python: ввод и выводPython: ввод и вывод
Python: ввод и вывод
 
Подпрограммы
ПодпрограммыПодпрограммы
Подпрограммы
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
 
Субъекторная модель
Субъекторная модельСубъекторная модель
Субъекторная модель
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6
 
5. java lecture io
5. java lecture io5. java lecture io
5. java lecture io
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторов
 
функции в Java script
функции в Java scriptфункции в Java script
функции в Java script
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о Boost
 
Михаил Давыдов — JavaScript: Базовые знания
Михаил Давыдов — JavaScript: Базовые знанияМихаил Давыдов — JavaScript: Базовые знания
Михаил Давыдов — JavaScript: Базовые знания
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
 
Stream API
Stream APIStream API
Stream API
 
Михаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знанияМихаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - JavaScript. Базовые знания
 

Viewers also liked

Введение в MFC
Введение в MFCВведение в MFC
Введение в MFCmcroitor
 
Обзор MS.Net Framework
Обзор MS.Net FrameworkОбзор MS.Net Framework
Обзор MS.Net Frameworkmcroitor
 
3. biblioteci de programare
3. biblioteci de programare3. biblioteci de programare
3. biblioteci de programaremcroitor
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Javametaform
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтовmetaform
 
архитектура приложений mfc
архитектура приложений mfcархитектура приложений mfc
архитектура приложений mfcmcroitor
 
mfc событийное программирование
mfc событийное программированиеmfc событийное программирование
mfc событийное программированиеmcroitor
 
Revizuirea framework .NET
Revizuirea framework .NETRevizuirea framework .NET
Revizuirea framework .NETmcroitor
 
0.0 particularitatile programarii с++
0.0 particularitatile programarii с++0.0 particularitatile programarii с++
0.0 particularitatile programarii с++mcroitor
 
mfc introducere
mfc introduceremfc introducere
mfc introduceremcroitor
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
Open Source Software in Libraries
Open Source Software in LibrariesOpen Source Software in Libraries
Open Source Software in LibrariesSukhdev Singh
 
Сети для самых маленьких. Часть восьмая. BGP и IP SLA
Сети для самых маленьких. Часть восьмая. BGP и IP SLAСети для самых маленьких. Часть восьмая. BGP и IP SLA
Сети для самых маленьких. Часть восьмая. BGP и IP SLANatasha Samoylenko
 

Viewers also liked (14)

Введение в MFC
Введение в MFCВведение в MFC
Введение в MFC
 
Обзор MS.Net Framework
Обзор MS.Net FrameworkОбзор MS.Net Framework
Обзор MS.Net Framework
 
3. biblioteci de programare
3. biblioteci de programare3. biblioteci de programare
3. biblioteci de programare
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтов
 
архитектура приложений mfc
архитектура приложений mfcархитектура приложений mfc
архитектура приложений mfc
 
mfc событийное программирование
mfc событийное программированиеmfc событийное программирование
mfc событийное программирование
 
Revizuirea framework .NET
Revizuirea framework .NETRevizuirea framework .NET
Revizuirea framework .NET
 
0.0 particularitatile programarii с++
0.0 particularitatile programarii с++0.0 particularitatile programarii с++
0.0 particularitatile programarii с++
 
mfc introducere
mfc introduceremfc introducere
mfc introducere
 
C++ теория
C++ теорияC++ теория
C++ теория
 
Reações ácido base
Reações ácido baseReações ácido base
Reações ácido base
 
Open Source Software in Libraries
Open Source Software in LibrariesOpen Source Software in Libraries
Open Source Software in Libraries
 
Сети для самых маленьких. Часть восьмая. BGP и IP SLA
Сети для самых маленьких. Часть восьмая. BGP и IP SLAСети для самых маленьких. Часть восьмая. BGP и IP SLA
Сети для самых маленьких. Часть восьмая. BGP и IP SLA
 

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

C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
C++ осень 2012 лекция 5
C++ осень 2012 лекция 5C++ осень 2012 лекция 5
C++ осень 2012 лекция 5Technopark
 
C++ осень 2012 лекция 4
C++ осень 2012 лекция 4C++ осень 2012 лекция 4
C++ осень 2012 лекция 4Technopark
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
 
C++ осень 2013 лекция 6
C++ осень 2013 лекция 6C++ осень 2013 лекция 6
C++ осень 2013 лекция 6Technopark
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыTheoretical mechanics department
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL Sergey Xek
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)Anton Bukov
 
Classes: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilderClasses: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilderAlexey Bovanenko
 
Tricks Stl Container
Tricks Stl ContainerTricks Stl Container
Tricks Stl Containercorehard_by
 
tricks of Stl containers
tricks of Stl containerstricks of Stl containers
tricks of Stl containersCOMAQA.BY
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...Alexey Paznikov
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x IntroductionFedor Vompe
 

Similar to стандартная библиотека с++: введение (20)

C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
C++ осень 2012 лекция 5
C++ осень 2012 лекция 5C++ осень 2012 лекция 5
C++ осень 2012 лекция 5
 
C++ осень 2012 лекция 4
C++ осень 2012 лекция 4C++ осень 2012 лекция 4
C++ осень 2012 лекция 4
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
 
C++ осень 2013 лекция 6
C++ осень 2013 лекция 6C++ осень 2013 лекция 6
C++ осень 2013 лекция 6
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
Step cpp0201
Step cpp0201Step cpp0201
Step cpp0201
 
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Java8. Innovations
Java8. InnovationsJava8. Innovations
Java8. Innovations
 
ввод и вывод элементов массива
ввод и вывод элементов массиваввод и вывод элементов массива
ввод и вывод элементов массива
 
Classes: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilderClasses: Number, String, StringBuffer, StringBuilder
Classes: Number, String, StringBuffer, StringBuilder
 
Tricks Stl Container
Tricks Stl ContainerTricks Stl Container
Tricks Stl Container
 
tricks of Stl containers
tricks of Stl containerstricks of Stl containers
tricks of Stl containers
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x Introduction
 

More from mcroitor

09 server mgmt_ii_ro
09 server mgmt_ii_ro09 server mgmt_ii_ro
09 server mgmt_ii_romcroitor
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_rumcroitor
 
10 server security_ro
10 server security_ro10 server security_ro
10 server security_romcroitor
 
10 server security_ru
10 server security_ru10 server security_ru
10 server security_rumcroitor
 
08 server mgmt_ro
08 server mgmt_ro08 server mgmt_ro
08 server mgmt_romcroitor
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_rumcroitor
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_rumcroitor
 
07 virtual hosts_ro
07 virtual hosts_ro07 virtual hosts_ro
07 virtual hosts_romcroitor
 
06 php instalation_ro
06 php instalation_ro06 php instalation_ro
06 php instalation_romcroitor
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_rumcroitor
 
05 db server_deployment_ro
05 db server_deployment_ro05 db server_deployment_ro
05 db server_deployment_romcroitor
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_rumcroitor
 
04 web server_deployment_ro
04 web server_deployment_ro04 web server_deployment_ro
04 web server_deployment_romcroitor
 
04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_rumcroitor
 
03 web server_architecture_ro
03 web server_architecture_ro03 web server_architecture_ro
03 web server_architecture_romcroitor
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_rumcroitor
 
02 server hardware_ro
02 server hardware_ro02 server hardware_ro
02 server hardware_romcroitor
 
02 server hardware_ru
02 server hardware_ru02 server hardware_ru
02 server hardware_rumcroitor
 
01 server definition_ro
01 server definition_ro01 server definition_ro
01 server definition_romcroitor
 
01 server definition
01 server definition01 server definition
01 server definitionmcroitor
 

More from mcroitor (20)

09 server mgmt_ii_ro
09 server mgmt_ii_ro09 server mgmt_ii_ro
09 server mgmt_ii_ro
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_ru
 
10 server security_ro
10 server security_ro10 server security_ro
10 server security_ro
 
10 server security_ru
10 server security_ru10 server security_ru
10 server security_ru
 
08 server mgmt_ro
08 server mgmt_ro08 server mgmt_ro
08 server mgmt_ro
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_ru
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_ru
 
07 virtual hosts_ro
07 virtual hosts_ro07 virtual hosts_ro
07 virtual hosts_ro
 
06 php instalation_ro
06 php instalation_ro06 php instalation_ro
06 php instalation_ro
 
06 php instalation_ru
06 php instalation_ru06 php instalation_ru
06 php instalation_ru
 
05 db server_deployment_ro
05 db server_deployment_ro05 db server_deployment_ro
05 db server_deployment_ro
 
05 db server_deployment_ru
05 db server_deployment_ru05 db server_deployment_ru
05 db server_deployment_ru
 
04 web server_deployment_ro
04 web server_deployment_ro04 web server_deployment_ro
04 web server_deployment_ro
 
04 web server_deployment_ru
04 web server_deployment_ru04 web server_deployment_ru
04 web server_deployment_ru
 
03 web server_architecture_ro
03 web server_architecture_ro03 web server_architecture_ro
03 web server_architecture_ro
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_ru
 
02 server hardware_ro
02 server hardware_ro02 server hardware_ro
02 server hardware_ro
 
02 server hardware_ru
02 server hardware_ru02 server hardware_ru
02 server hardware_ru
 
01 server definition_ro
01 server definition_ro01 server definition_ro
01 server definition_ro
 
01 server definition
01 server definition01 server definition
01 server definition
 

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

  • 2. Оглавление     Пример программы Структура стандартной библиотеки С++ Ввод-вывод данных Компоненты STL  Контейнеры  Итераторы  Некоторые примитивы библиотеки STL
  • 3. Пример программы #include <vector> #include <algorithm> #include <fstream> int main(){ std::ifstream fin("input.txt"); std::ofstream fout("output.txt"); Считать из файла input.txt массив целых чисел, разделенных пробельными символами. Отсортировать их и записать в файл 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;
  • 4. Структура стандартной библиотеки С++      Стандартная библиотека шаблонов (STL - Standard Template Library) библиотека для работы с потоками данных обработка исключений стандартная библиотека языка С некоторые дополнительные определения типов, операторов, функций •заголовочный файл пишется без расширения; •библиотеки языка С начинаются с буквы с (вместо math.h используется cmath); •Стандартная библиотека С++ объявлена в пространстве имѐн std.
  • 5. Ввод-вывод данных  iostream - библиотека для работы с потоками данных. Объявлена в заголовочных файлах ios, fstream, iostream и др. Предоставляет следующие элементы:  Базовые шаблонные классы  конкретизированные шаблонные классы  Стандартные объекты  Манипуляторы  Чаще всего работают со стандартными объектами (cin, cout)
  • 6. Компоненты STL      алгоритм (algorithm): определяет вычислительную процедуру. контейнер (container): управляет набором объектов в памяти. итератор (iterator): обеспечивает для алгоритма средство доступа к содержимому контейнера. функциональный объект (function object): инкапсулирует функцию в объекте для использования другими компонентами. адаптер (adaptor): адаптирует компонент для обеспечения различного интерфейса.
  • 7. Контейнеры  Контейнером называют тип данных, предназначенный для хранения объектов (обычно одного типа). Последовательные контейнеры: •Вектор •Список •Двусторонняя очередь Ассоциативные контейнеры: •Множество •Хеш-таблица •Множество с повторами •Хеш-таблица с повторами
  • 8. Итераторы   Итератор – объект, предоставляющий доступ к элементам контейнера. Обладает семантикой указателя. Основные свойства итератора:      Operator разыменования * Оператор инкремента ++ Метод begin() контейнера указывает на первый итератор Метод end() контейнера указывает за последний итератор Контейнеры содержат объекты, на которые указывают итераторы из полуинтервала [begin(), end())
  • 9. Примитивы STL: операторы сравнения  Для поддержки всех операторов сравнения достаточно  Подключить библиотеку utility  Перегрузить операторы == и <.   Реализация остальных операторов определяется через == и <. Операторы сравнения определены в пространстве имен std::rel_ops
  • 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) ); }
  • 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; };