Задания для 2-го курса

Повторение
Задания на повторение шаблонов и перегрузки операторов см. тут: http://litvinov.in.ua/files/course2
Л.р.№1. Последовательные контейнеры
1.
Произвести замеры времени, которое тратится на помещение в изначально пустой vector 1000000 элементов путем их вставки в конец.
Провести аналогичные замеры для случая вставки в начало.
Аналогичные два эксперимента провести с контейнером dequeue.
Сравнить и объяснить полученные значения времени.
2.
С заполненными (1 млн. элементов) контейнерами vector и deque провести следующие эксперименты:
  -  обратиться к 1000 элементов в случайной позиции;
  -  вставить 1000 элементов в случайную позицию;
  -  удалить 1000 элементов из случайной позиции.
 
Результаты экспериментов объяснить и занести в следующую таблицу:
  push_back  push_front  []  insert   erase
vector           
 deque          
 
Примечания
  1. Не все операции, время выполнения которых надо измерить, реализованы в виде методов классов vector и deque. Поэтому некоторые из них нужно будет написать самостоятельно (например, для вставки в начало вектора можно воспльзоваться методом insert.).
  2. Итератор, указывающий на i-ый элемент вектора или деки, можно получить, прибавив i к begin-итератору:
typedef std::deque<int> deq;
deq d(100);
deq::iterator i = d.begin();
i = i + 10;            // теперь i указывает на 10-ый элемент!

     3. Для точного измерения времени можно использовать функцию clock() из time.h (http://www.cplusplus.com/reference/clibrary/ctime/)

Л.р.№2. Адаптеры

1. Создать класс "Студент" (ФИО, ср.балл + др. поля по желанию).
2. Заполнить 30-ю "студентами" очередь с приоритетами.
3. Извлечь из очереди и вывести на экран список 10-ти студентов с наибольшим баллом.

Л.р.№3. Ассоциативные контейнеры
1. Заполнить "студентами" multiset (или по желанию multimap), ключ - фамилия.
2. Вывести предупреждение в случае наличия однофамильцев.
3. Вывести на экран информацию о студентах, упорядочив их в алфавитном порядке.
*4. То же, что и (3), только упорядочивать - по баллу, а не по фамилии. Ни самописанную, ни библиотечную сортировку не использовать. (бонус-задание)

Л.р.№4. Алгоритмы

1. Разработать класс для представления группы студентов. Реализовать:
2. Стандартные операции типа добавления/удаления/просмотра/редактирования.
3. Сортировку студентов по возрастанию и убыванию среднего балла (std::sort).
4. Поиск первого студента со средним баллом выше заданного (std::find_if)
5. Использоват стандартные алгоритмы, связыватели и адаптеры функций-элементов.
Comments