Произвести исследование исползования различных абстрактных структур данных при выполнении различных операций.
Рассмотреть следующие структуры данных: stack, queue, array, vector, list, set, map, unordered set, unordered map. Дать краткое описание каждой структуре данных.
Рассмотреть следующие операции: создание структуры из N элементов, удаление структуры из N элементов, вставка M элементов в середину структуры.
Объяснить, почему некоторые операции не могут быть выполнены для данной структуры данных.
Для каждой возможной пары данные/операция нужно провести эксперимент для расчёта времени, затрачиваемой на проведение операции, варьируя параметры N и M.
При создании структуры или удалении менять только параметр N. При исследовании вставки в середину варьировать только параметр M, выбрав в качестве изначального размера данных некоторое большое число N.
В качестве возможных значений числа N выбрать любую арифметическую прогрессию, чтобы результат был отчётливо виден на графике. Например, 10к-20к-30к-...-100к или с большим разбросом, если позволяет используемая ЭВМ.
В качестве M выбирать числа порядка 1%-2%-3%-...-20% (или с большим разбросом, если позволяет ЭВМ) от изначального числа данных в структуре, в которую осуществляется вставка в середину.
Не забывайте очищать используемую память, иначе это может повлиять на следующий эксперимент!
Сделать выводы, как зависит время выполнения тех или иных операций для различных структур данных от параметров N и M.
Зависимость показывает постоянную (T(N, M) = c), линейную (T(N) = b * N + c), логарифмическую (T(N) = b * log(N) + c), квадратическую (T(N) = a * N^2 + b * N + c) или какую-то другую зависимость или её отсутствие?
Какие структуры данных выгоднее применять при превалировании тех или иных операций над данными?