I . Немодифицирующие операции. 


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



ЗНАЕТЕ ЛИ ВЫ?

I . Немодифицирующие операции.



for_earch() выполняет операции для каждого элемента последовательности

find()        находит первое вхождение значения в последовательность

find_if()    находит первое соответствие предикату в последовательности

count()     подсчитывает количество вхождений значения в последовательность

count _ if () подсчитывает количество выполнений предиката в последовательности

search()   находит первое вхождение последовательности как подпоследовательности

search_n() находит n-е вхождение значения в последовательность

 

II. Модифицирующие операции.

copy()                  копирует последовательность, начиная с первого элемента

swap()                   меняет местами два элемента

replace()               заменяет элементы с указанным значением 

replace_if()           заменяет элементы при выполнении предиката

replace_copy()   копирует последовательность, заменяя элементы с указанным значением

replace_copy_if() копирует последовательность, заменяя элементы при выполнении предиката

fill()                       заменяет все элементы данным значением

remove()               удаляет элементы с данным значением

remove _ if ()          удаляет элементы при выполнении предиката

remove _ copy ()   копирует последовательность, удаляя элементы с указанным значением

remove_copy_if()   копирует последовательность, удаляя элементы при выполнении предиката

reverse()               меняет порядок следования элементов на обратный

random_shuffle() перемещает элементы согласно случайному равномерному распределению (“тасует” последовательность)

transform ()        выполняет заданную операцию над каждым элементом последовательности

unique ()               удаляет равные соседнии элементы

unique _ copy ()   копирует последовательность, удаляя равные соседние элементы

 

III. Сортировка.

sort()                 сортирует последовательность с хорошей средней эф-фективностью

partial_sort()          сортирует часть последовательности

stable _ sort ()        сортирует последовательность, сохраняя порядок следо-вания равных элементов

lower_bound()    находит первое вхождение значения в отсортированной последовательности

upper _ bound () находит первый элемент, больший чем заданное значение

binary_search() определяет, есть ли данный элемент в отсортированной последовательности

merge()               сливает две отсортированные последовательности

 

IV. Работа с множествами.

includes()             проверка на вхождение

set_union()          объединение множеств

set_intersection() пересечение множеств

set_difference()   разность множеств

 

V. Минимумы и максимумы.

min()                    меньшее из двух

max()                   большее из двух

min_element()     наименьшее значение в последовательности

max_element()    наибольшее значение в последовательности

 

VII. Перестановки.

next_permutation() следующая перестановка в лексикографическом порядке

pred_permutation() предыдущая перестановка в лексикографическом порядке

 

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

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

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

Третья программа демонстрирует использование алгоритмов STL.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. В качестве пользовательского типа данных использовать пользовательский класс лабораторной работы № 6.

3. При создании контейнеров в программе № 2 объекты загружать из потока, для чего использовать программы записи и чтения потока из лабораторной работы № 6.

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

5. Для создания второго контейнера в программе № 3 можно использовать либо алгоритм remove_ copy_ if, либо определить свой алгоритм copy_ if, которого нет в STL.

6. Для поиска элемента в коллекции можно использовать алгоритм find_ if, либо for_ each, либо binary_ search, если контейнер отсортирован.

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

№ п/п Первый контейнер Второй контейнер Встроенный тип данных
1 vector list int
2 list deque long
3 deque stack float
4 stack queue double
5 queue vector char
6 vector stack string
7 map list long
8 multimap deque float
9 set stack int
10 multiset queue char
11 vector map double
12 list set int
13 deque multiset long
14 stack vector float
15 queue map int
16 priority_queue stack char
17 map queue char
18 multimap list int
19 set map char
20 multiset vector int

Графика

Цель.

Развить практические навыки работы с графикой в условиях алфавитно – цифрового экрана для программ С++ Linux.

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

Сформировать объектную систему отображения заданных графических объектов средствами псевдографики и ncurses в изменяемом окне экрана с использованием цвета и других эффектов отображения знаков.



Поделиться:


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

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