Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 18. Стандартная библиотека шаблонов

Поиск

Цель.

Освоить технологию обобщенного программирования с ис­пользованием библиотеки стандартных шаблонов (STL) языка C++.

Основное содержание работы.

Написать три программы с использованием STL. Первая и вторая программы должны демонстрировать работу с контейнерами STL, третья - использование алгоритмов STL.

Порядок выполнения работы.

Написать и отладить три программы. Первая программа демонстри­рует использование контейнерных классов для хранения встроенных типов данных.

Вторая программа демонстрирует использование контейнерных классов для хранения пользовательских типов данных.

Третья программа демонстрирует использование алгоритмов STL. В программе № 1 выполнить следующее:

1) Создать объект-контейнер в соответствии с вариантом задания и заполнить его данными, тип которых определяется вариантом задания.

2) Просмотреть контейнер.

3) Изменить контейнер, удалив из него одни элементы и заменив другие.

4) Просмотреть контейнер, используя для доступа к его элементам итераторы.

5) Создать второй контейнер этого же класса и заполнить его данны­ми того же типа, что и первый контейнер.

6) Изменить первый контейнер, удалив из него n элементов после за­данного и добавив затем в него все элементы из второго контейнера.

7) Просмотреть первый и второй контейнеры.

В программе № 2 выполнить то же самое, но для данных пользова­тельского типа.

В программе № 3 выполнить следующее:

1. Создать контейнер, содержащий объекты пользовательского типа. Тип контейнера выбирается в соответствии с вариантом задания.

2. Отсортировать его по убыванию элементов.

3. Просмотреть контейнер.

4. Используя подходящий алгоритм, найти в контейнере элемент, удовлетворяющий заданному условию.

5. Переместить элементы, удовлетворяющие заданному условию в другой (предварительно пустой) контейнер. Тип второго контейнера опре­деляется вариантом задания.

6. Просмотреть второй контейнер.

7. Отсортировать первый и второй контейнеры по возрастанию эле­ментов.

8. Просмотреть их.

9. Получить третий контейнер путем слияния первых двух.

10. Просмотреть третий контейнер.

11.Подсчитать, сколько элементов, удовлетворяющих заданному ус­ловию, содержит третий контейнер.

12. Определить, есть ли в третьем контейнере элемент, удовлетво­ряющий заданному условию.

Методические указания.

Проект должен содержать 3 целевых узла (по числу программ).

1. В качестве пользовательского типа данных использовать cвой пользо­вательский класс(придумать самому).

2. При создании контейнеров в программе № 2 объекты выгружать и загружать из потока (файла).

3. Для вставки и удаления элементов контейнера в программе № 2 использовать соответствующие операции, определенные в классе контей­нера.

4. Для создания второго контейнера в программе № 3 можно исполь­зовать либо алгоритм remove_copy_if, либо определить свой алгоритм copy_if, которого нет в STL.

5. Для поиска элемента в коллекции можно использовать алгоритм find_if, либо for_each, либо binary_search, если контейнер отсортирован.

6. Для сравнения элементов при сортировке по возрастанию исполь­зуется операция <, которая должна быть перегружена в пользовательском классе. Для сортировки по убыванию следует написать функцию comp и использовать вторую версию алгоритма sort.

7. Условия поиска и замены элементов выбираются самостоятельно и для них пишется функция-предикат.

8. Для ввода-вывода объектов пользовательского класса следует пе­регрузить операции ">>" и "<<".

9. Некоторые алгоритмы могут не поддерживать используемые в вашей программе контейнеры. Например, алгоритм sort не поддерживает контейнеры, которые не имеют итераторов произвольного доступа. В этом случае следует написать свой алгоритм. Например, для стека алгоритм сортировки может выполняться следующим образом: переписать стек в вектор, отсортировать вектор, переписать вектор в стек.

10.При перемещении элементов ассоциативного контейнера в неас­социативный перемещаются только данные (ключи не перемещаются). И наоборот, при перемещении элементов неассоциативного контейнера в ас­социативный должен быть сформирован ключ.

Содержание отчета.

1) Титульный лист.

2) Постановка задач.

3) Определение пользовательского класса.

4) Определения используемых в программах компонентных функций для работы с контейнером, включая конструкторы.

5) Объяснение этих функций.

6) Объяснение используемых в программах алгоритмов STL.

7) Определения и объяснения, используемых предикатов и функций сравнения.

Варианты заданий.

№ п/п Первый контейнер Второй контейнер Встроенный тип данных
  vector list int
  list deque long
  deque stack float
  stack queue double
  queue vector char
  vector stack string
  map list long
  multimap deque float
  set stack int
  multiset queue char
  vector map double
  list set int
  deque multiset long
  stack vector float
  queue map int
  priority queue stack char
  map queue char
  multimap list int
  set map char
  multiset vector int



Поделиться:


Последнее изменение этой страницы: 2016-12-11; просмотров: 643; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.73.221 (0.006 с.)