Содержание
- 2. STL (standard template library) – библиотека стандартных методов и классов, входящая в состав любой системы программирования,
- 3. Для чего нужны контейнерные классы? Контейнерные классы реализуют наиболее распространенные модели обработки и хранения данных. Они
- 4. Классификация контейнеров Последовательные Контейнеры Адаптеры Ассоциативные stack priority_queue queue map set multimap bitset multiset
- 5. Различия в типах контейнеров Последовательные контейнеры обеспечивают хранение однотипных величин в виде непрерывной последовательности, т.е. определены
- 6. Различия в типах контейнеров Адаптеры реализованы на основе базовых последовательных контейнеров и предназначены для выполнения ограниченного
- 7. Создание контейнеров Для создания контейнера необходимо в качестве параметра шаблона указать тип данных, хранящихся в шаблоне:
- 8. Итераторы Итератор используется для доступа к элементам контейнера. Итератор является аналогом указателя на элемент, хотя физическая
- 9. Определение итераторов Итератор описан в каждом контейнере как вспомогательный класс, поэтому при определении итератора необходимо указывать
- 10. Действительные и недействительные итераторы Итераторы могут быть действительными и недействительными. Действительный итератор связан с конкретным элементом
- 11. Основные операции над итераторами Пусть i – итератор, n – целое число, c - контейнер Все
- 12. Основные операции над итераторами Пусть i – итератор, n – целое число, c – контейнер Прямые
- 13. Основные операции над итераторами Реверсивные итераторы i = c.rbegin() – итератор связывается с последним элементом контейнера
- 14. Примеры работы с итераторами просмотр всех элементов списка просмотр всех элементов списка в обратном порядке typedef
- 15. Интервал Интервал – несколько подряд идущих элементов контейнера. Интервал задаётся двумя итераторами i1 и i2. Итератор
- 16. Операции над последовательными контейнерами Следующие операции допустимы над всеми последовательными контейнерами: вставка в начало контейнера (перед
- 17. Допустимость и трудоёмкость операций для различных типов последовательных контейнеров
- 18. Основные типы, используемые при работе с последовательными контейнерами Определение размеров контейнера
- 19. Параметры и результаты операций над последовательными контейнерами
- 20. Параметры и результаты операций над последовательными контейнерами
- 21. Параметры и результаты операций над последовательными контейнерами
- 22. Параметры и результаты операций над последовательными контейнерами
- 23. Конструкторы последовательных контейнеров (на примере vector)
- 24. Примеры работы с последовательными контейнерами vector v1, v2; // описываем два вектора … for (int i=1;
- 25. Примеры работы с последовательными контейнерами vector v1; Задание: удалить из контейнера все элементы, меньшие 5 vector
- 26. Примеры работы с последовательными контейнерами Верные варианты решения этой задачи: vector ::iterator it; for (unsigned i=0;
- 27. Особенности работы с контейнером vector Память под вектор выделяется динамически, возможно, сразу под группу элементов. Выделением
- 28. Примеры управления распределением памяти vector L; // память будет выделяться поэлементно cout // результат: 0 0
- 29. Примеры управления распределением памяти (продолжение) L.reserve(100); cout // результат: 100 5 L.resize(20); cout // результат: 100
- 30. Примеры управления распределением памяти (продолжение) vector L(100); // память будет выделяться блоками по 50 элементов cout
- 31. Особенности работы с контейнером list Контейнер List обладает дополнительными методами:
- 32. Особенности работы с контейнером list Контейнер List обладает дополнительными методами:
- 33. Примеры работы с контейнером list typedef list :: iterator it_lint; typedef list :: reverse_iterator rit_lint; list
- 34. Примеры работы с контейнером list (продолжение) L1.splice(L1.begin(), L); WriteList(L); WriteList(L1); // результат: // 0: // 10:
- 35. Примеры работы с контейнером list (продолжение) L1 = L; L1.remove(16); L.remove(12); L1.merge(L); WriteList(L); WriteList(L1); // результат:
- 36. Примеры работы с контейнером list (продолжение) bool f(int k) { return (k%10==2); } L1 = L;
- 37. Адаптеры
- 38. Адаптеры По умолчанию приоритет элемента, помещаемого в priopity_queue – его значение Кроме того, для всех адаптеров
- 39. Пример работы с адаптером priority_queue enum prty {Low, Normal, High}; struct pq_item { int I; prty
- 40. Пример работы с адаптером priority_queue (продолжение) priority_queue , Compare> pq; // описываем очередь pq.push(pq_item(10)); pq.push(pq_item(14, High));
- 41. Ассоциативные контейнеры Использование ассоциативных контейнеров предполагает, что в хранимых данных выделяется ключ, который определяет конкретный элемент
- 42. Типы ассоциативных контейнеров
- 43. Вспомогательный класс pair template class pair { T1 first; T2 second; }; template pair make_pair (T1
- 44. Работа с контейнером map Класс map является шаблоном, зависящим от двух или трех параметров: типа ключа;
- 45. Примеры описаний контейнера map #include using namespace std; map m1; // ключ целое число, неключевые данные
- 46. Пример работы с контейнером map Задача: Вывести на консоль количество, а также все элементы контейнера в
- 47. Пример работы с контейнером map (продолжение) int main() { M2.insert(make_pair(15, "fifteen")); M2.insert(make_pair(10, "ten")); M2.insert(make_pair(50, "fifty")); WriteMap(M2);
- 48. Реализация телефонной книги контейнером map Ключ: информация о владельце контакта (ФИО, название учреждения, ник) Неключевые данные:
- 49. Перегрузка операции индексации для контейнера map В классе map переопределена операция взятия индекса T& operator[](const Key&)
- 50. Другие методы ассоциативных контейнеров
- 51. Другие методы ассоциативных контейнеров (продолжение)
- 52. Другие методы ассоциативных контейнеров (продолжение) При удалении одного или нескольких элементов контейнера все итераторы, связанные с
- 53. Примеры работы с телефонной книгой 1. Найти телефон по фамилии или выдать сообщение об отсутствии данных.
- 54. Примеры работы с телефонной книгой (продолжение) 3. Вставить новый элемент по паре «ключ – неключевые данные».
- 55. Класс multimap Класс miltimap допускает хранение нескольких элементов с одинаковыми ключами (допускается также полное дублирование хранящихся
- 56. Примеры работы с классом multimap 1. Вывести всю хранящуюся информацию для ключа "kash“. typedef multimap phb;
- 57. Примеры работы с классом multimap (продолжение) 2. Исправить адрес электронной почты для одного элемента ключа "kash“.
- 59. Скачать презентацию