Презентация Обзор библиотеки STL. (Лекция 7) онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Обзор библиотеки STL. (Лекция 7) абсолютно бесплатно. Урок-презентация на эту тему содержит всего 24 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Обзор библиотеки STL. (Лекция 7)



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    24 слайда
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    797.00 kB
  • Просмотров:
    67
  • Скачиваний:
    3
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
Обзор библиотеки STL
Содержание слайда: Обзор библиотеки STL

№2 слайд
Ортогональное пространство
Содержание слайда: Ортогональное пространство STL Y (vector, list,…) – структура данных контейнеры X (int, char, double,…) – данные простых типов элементы Z (find, copy,…) алгоритмы В точке начала отсчёта данные не определены, хотя существует тип void. Каждая точка на плоскости XY – это совокупность данных любых типов, заключённых в контейнеры. Каждая точка на плоскости XZ – работа какого-то алгоритма с данными простого типа. Точки на плоскости YZ смысла не имеют. Каждая точка, не лежащая на плоскостях XY и YZ – это работа алгоритма с контейнером, заполненным данными какого-то типа.

№3 слайд
Состав STL контейнеры,
Содержание слайда: Состав STL: контейнеры, итераторы, алгоритмы, аллокаторы, адаптеры. Контейнер – хранилище, единицами хранения (элементами) являются другие объекты + набор методов, предназначенных для манипулирования элементами контейнера. В контейнере может быть только один тип данных. Последовательный контейнер представляет множество объектов одного типа в строго линейной последовательности. Ассоциативный контейнер обеспечивает быструю выборку данных, соответствующих указанному ключу. Для реализации ассоциативных контейнеров используются двоичные деревья.

№4 слайд
Состав STL Итератор аналог
Содержание слайда: Состав STL: Итератор – аналог указателя. Получив итератор какого-то элемента контейнера, при помощи оператора инкремента ++ можно перейти к следующему элементу контейнера, а при помощи -- - к предыдущему элементу. Разыменованный итератор – это данные элемента контейнера, => их можно получить или изменить. Для каждого класса контейнеров определяется свой класс итераторов, однако интерфейсы итераторов разных контейнеров полностью совпадают.

№5 слайд
Итераторы Итераторы можно
Содержание слайда: Итераторы Итераторы можно назвать посредниками между алгоритмами и контейнерами, потому что многие алгоритмы используют итераторы для того, чтобы перебрать элементы в контейнере. Какие функции должен выполнять итератор? Возможность разыменования того объекта, на который указывает итератор. Возможность изменить объект, на который указывает итератор. Возможность сравнения итераторов (==), например, определить, дошли ли до конечного элемента контейнера. Итераторы, обладающие такими свойствами называются базовыми (Trivial Iterator) и практического применения такие итераторы не имеют. К итераторам добавляются новые свойства и получаем новые виды контейнеров.

№6 слайд
Итераторы Input Iterator
Содержание слайда: Итераторы Input Iterator – получаем доступ только для чтения данных (необходим инкремент). Output Iterator – нужно уметь записывать данные в контейнер. Forward Iterator – чтение и запись данных (перемещение в одном направлении). Bidirectional Iterator – перемещение не только в прямом, но и в обратном направлениях. Random Access Iterator – произвольный доступ к любому элементу контейнера таким образом, что время доступа к любому элементу не зависит от размера контейнера.

№7 слайд
Итераторы Кроме этих типов
Содержание слайда: Итераторы Кроме этих типов существуют (адаптеры итераторов): реверсивный или обратный итератор,- перебор элементов осуществляется в обратном порядке (применяются методы rbegin() и rend()), итератор вставки, например insert_iterator, потоковые итераторы – для использование потоков в/в, для входного потока – istream_iterator, для выходного – ostream_iterator. Например: ostream_iterator<int> i(cout, " ") ; copy (a, a+N, i) ; // потоковый итератор – 3-й аргумент или istream_iterator<int> is(cin);

№8 слайд
Иерархия итераторов Random
Содержание слайда: Иерархия итераторов Random Access Iterator Bidirectional Iterator Forward Iterator Input Iterator Output Iterator Trivial Iterator Все итераторы, которые находятся выше, включают в себя функциональность операторов, находящихся ниже. Во всех контейнерных классов для того, чтобы получить итератор начального элемента, необходимо использовать метод begin(), для получения итератора конечного элемента – метод end().

№9 слайд
Алгоритмы Алгориты делятся на
Содержание слайда: Алгоритмы Алгориты делятся на несколько категорий: немодифицирующие алгоритмы (не изменяющие порядок следования элементов в контейнере) – count, count_if, find, find_if и др.; модифицирующие алгоритмы (изменяющие порядок следования элементов в контейнере) - copy, replace, reverse, swap (обмен местами двух элементов) и др.; алгоритмы сортировки и поиска (упорядочивание, поиск, слияние и т.д.) – merge, sort, stable_sort (сохраняет порядок для одинаковых элементов), partial_sort (частичная сортировка), max_element и др.; алгоритмы работы с множествами – accumulate, includes set_intersection set_difference и др. Численные алгоритмы (подключаем заголовочный фай)

№10 слайд
Аллокаторы Аллокаторы
Содержание слайда: Аллокаторы Аллокаторы предназначены для выделения и освобождения памяти, – низкоуровневый интерфейс. Если контейнер выделяет память при помощи аллокатора, то при удалении контейнера можно не заботиться об освобождении памяти, всё делается автоматически. Адаптеры – это классы, которые упрощают интерфейс для доступа к объектам другого класса. Одним из недостатков STL является не очень удобная работа с итераторами, т.е. после добавления или удаления элемента в/из контейнера итератор может стать недействительным.

№11 слайд
Множества и словари set
Содержание слайда: Множества и словари set (multiset) – ассоциативный контейнер, который содержит элементы, отсортированные в соответствии с уникальным (неуникальным) ключом. Сортировка производится с использованием функции Compare. Операции поиска, удаления и включения имеют логарифмическую сложность. std::set template<     class Key,     class Compare = std::less <Key>,     class Allocator = std::allocftor <Key> > class set;

№12 слайд
Множества и словари map
Содержание слайда: Множества и словари map (multimap) – ассоциативный контейнер, который отсортированные список пар в соответствии с уникальным (неуникальным) ключом. Сортировка производится согласно функции Compare. Операции поиска, удаления и включения имеют логарифмическую сложность. std::multimap template<     class Key,     class T,     class Compare =std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T> > > class multimap;

№13 слайд
Пример использования словаря
Содержание слайда: Пример использования словаря Создаём класс CTicketInfo, который будет содержать все необходимые поля для заявки, а также этот класс будет использоваться при описании словаря multimap.

№14 слайд
Описание класса class
Содержание слайда: Описание класса class CTicketInfo { public: long ticket_id; // идентификатор билета long n_reis; // номер рейса string dest; // пункт назначения string fio; // ФИО пассажира string date; // дата вылета }; #include <map> multimap<long, CTicketInfo> m_Tickets;

№15 слайд
int add ticket int add ticket
Содержание слайда: int add_ticket() int add_ticket() { setlocale(LC_ALL,"Russian"); long reis_n, id_ticket; char ch[30]; string str; CTicketInfo tickets; multimap<long, CTicketInfo>::iterator it; bool yes(false), no(false), item_not_found(false); char user_respond[2], respond_no[ ] = "n", respond_yes[ ] = "y";   while (strcmp(respond_no, user_respond) != 0) { system("cls"); cout << "Добавление заявки: (en words only)\n"; cout << "Введите номер заявки: "; cin >> id_ticket; it = m_Tickets.find(id_ticket); if (it != m_Tickets.end()) и т.д.

№16 слайд
Абстракция данных Абстрактный
Содержание слайда: Абстракция данных Абстрактный тип данных – это совокупность данных и операций над ними. Структура данных – это конструкция, определённая в языке программирования для хранения набора данных.

№17 слайд
Абстрактный список Нам может
Содержание слайда: Абстрактный список Нам может понадобиться доступ к любому элементу списка. Это значит, что мы можем просматривать элемент, находящийся на позиции i, удалять его или вставлять новый элемент в эту позицию. Эти операции являются частью абстрактного типа данных под названием список (list). Операции над абстрактным списком: Создать пустой список. Уничтожить список. Определить, пуст ли список. Определить кол-во элементов в списке. Вставить элемент в указанную позицию списка. Удалить элемент, находящийся в указанной позиции списка. Просмотреть (извлечь) элемент, находящийся в указанной позиции списка.

№18 слайд
Абстрактный список
Содержание слайда: Абстрактный список Принципиально важно, что спецификация абстрактного типа не затрагивает вопросов его реализации. Именно это ограничение позволяет воздвигать стены между реализацией АТД и программой, использующей его. Такая программа называется клиентом (client). Единственным обстоятельством, влияющим на выполнение программы, является содержание самой операции.

№19 слайд
Данные и методы,
Содержание слайда: Данные и методы, инкапсулированные в объекте Инкапсуляция объединяет данные АТД с его операциями, называемыми методами (methods), образуя объекты (objects). Инкапсуляция скрывает детали реализации. Основные положения: Класс языка С++ определяет новый тип данных. Объект – это экземпляр класса. Конструктор создаёт и инициализирует объект. Данные-члены должны быть закрытыми. Константные функции не могут изменять данные-члены класса. Конструктор по умолчанию не имеет аргументов. Файл реализации содержит определения всех функций-членов класса и др.

№20 слайд
Абстрактный стек Операции над
Содержание слайда: Абстрактный стек Операции над абстрактным стеком: Создать пустой стек. Уничтожить стек. Определить, пуст ли стек. Добавить в стек новый элемент. Удалить из стека элемент, добавленный последним. Извлечь из стека элемент, добавленный последним.

№21 слайд
Абстрактная очередь Операции
Содержание слайда: Абстрактная очередь Операции над абстрактной очередью: Создать пустую очередь. Уничтожить очередь. Определить, пуста ли очередь. Добавить в очередь новый элемент. Удалить из очереди элемент, поставленный туда раньше всех. Извлечь из очереди элемент, поставленный туда раньше всех.

№22 слайд
Бинарные деревья Операции над
Содержание слайда: Бинарные деревья Операции над абстрактной бинарным деревом: 1. Создать пустое бинарное дерево. 2. Создать бинарное дерево, содержащее один узел, по заданному элементу. 3. Создать бинарное дерево по заданному корню и двум бинарным поддеревьям этого корня. 4. Уничтожить бинарное дерево. 5. Определить, пусто ли бинарное дерево. 6. Определить или изменить данные, записанные в корне бинарного дерева. 7. Присоединить к корню бинарного дерева левый или правый дочерний узел.

№23 слайд
Бинарные деревья продолжение
Содержание слайда: Бинарные деревья (продолжение) Операции над абстрактной бинарным деревом: 8. Присоединить к корню бинарного дерева левое или правое поддерево. 9. Отсоединить от корня бинарного дерева левое или правое поддерево. 10. Вернуть копию левого или правого поддерева корня бинарного дерева. 11. Обойти узлы бинарного дерева в прямом, симметричном или обратном порядке.

№24 слайд
Графы как абстрактные типы
Содержание слайда: Графы как абстрактные типы данных Операции над абстрактным графом: Создать пустой граф. Уничтожить граф. Определить, пуст ли граф. Определить количество вершин в графе. Определить количество рёбер в графе. Определить, существует ли ребро, соединяющее два заданных ребра. Вставить вершину в граф. Поисковые ключи, хранящиеся в вершинах, должны отличаться от ключа новой вершины. Вставить ребро, соединяющее две заданные вершины графа. Удалить из графа указанную вершину, а также все рёбра, соединяющие её с другими вершинами.

Скачать все slide презентации Обзор библиотеки STL. (Лекция 7) одним архивом: