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


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



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 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) Определения и объяснения, используемых предикатов и функций сравнения.

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



Поделиться:


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

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