📘 О чем эта работа
Лабораторная посвящена практическому использованию стандартной библиотеки C++ (STL) для хранения и обработки коллекций. Объектами исследования являются разные контейнеры (array, vector, list, set, map, multimap, unordered_set) и пользовательские структуры (в частности City и Laureate); предмет — операции над коллекциями и применение алгоритмов STL для решения типовых задач.
📚 Что внутри
Работа структурирована в три задания с подробными описаниями, таблицами тестов и полноценно оформленными кодами на C++:
- Задание 1: создание и инициализация контейнеров (array, vector, list, set, map, multimap, unordered_set), демонстрация операций вставки, поиска, удаления, изменения и копирования между контейнерами. Приведен пример пользовательской структуры Laureate (fio, work, field, year) и измерение времени массовых вставок (100000 элементов).
- Задание 2: работа с вектором случайных чисел (m1=0, m2=15, size=10): генерация через generate, копирование, перемешивание через shuffle (default_random_engine), вычисление среднего через accumulate, поэлементное перемножение через transform+multiplies, и возведение в квадрат элементов с помощью лямбда-функции. В коде указаны примеры вывода и форматирования (setprecision).
- Задание 3: создание ассоциативного контейнера set с пользовательской структурой City (name, latitude, longitude). Описана перегрузка оператора < для корректной сортировки по имени, широте и долготе, реализованы функции addCity, findCity, removeCity, displayCities, saveToFile и loadFromFile, а также интерактивное меню для управления коллекцией.
Во всех заданиях присутствуют таблицы тестов с конкретными входными данными и ожидаемыми результатами; примеры файлового ввода/вывода (data.txt, cities.txt) и подробные комментарии к коду.
📊 Для кого подходит
Подходит студентам бакалавриата по направлениям программная инженерия, информатика и вычислительная техника, а также преподавателям в курсах по «Введению в библиотеки программирования» и «Алгоритмам и структурам данных» для демонстрации практических примеров работы со STL и пользовательскими типами.
✨ Особенности
Конкретные преимущества этой работы:
- Полные рабочие примеры на C++ с использованием современных приемов: лямбда-функции, объекты-функции (multiplies), default_random_engine, алгоритмы generate, transform, shuffle, accumulate, remove/erase, sort.
- Показаны разные способы инициализации контейнеров (инициализаторы, конструкторы, копирование через итераторы).
- Реализация сохранения/загрузки данных в текстовые файлы и обработка ошибок при открытии файлов.
- Демонстрация использования пользовательских структур в ассоциативных контейнерах с корректной перегрузкой оператора сравнения и примерами устранения дублей.
- Включены таблицы спецификаций структуры City (диапазоны широты/долготы) и подробные таблицы тестов для валидации работоспособности кода.
❓ Частые вопросы
Подойдет ли для моего ВУЗа?
Структура и содержание соответствуют стандартным требованиям для лабораторных по программированию: цель, условия, словесное описание алгоритма, таблицы тестов и сопровождающий код.
Можно адаптировать?
Да. Код и описания легко адаптируются под иные размеры массивов, форматы ввода/вывода, дополнительные проверки и альтернативные критерии сравнения в структурах.
Итог: работа дает готовые примеры и шаблоны для освоения контейнеров STL, алгоритмов и взаимодействия с пользовательскими типами — полезно для самостоятельного выполнения лабораторных и ускоренного изучения практических аспектов современного C++.