§ 7. Контейнеры, итераторы, представления, алгоритмы
Задания
01Создайте базу данных пользователей операционной системы в виде std::vector<Account>
и наполните ее тестовыми данными. Класс Account
выглядит так:
struct Account { unsigned int id; // идентификатор std::string login; // логин std::string name; // имя std::string shell; // оболочка std::string home_directory; // домашняя директория };
Затем выполните следующие задания в виде тестов для этой базы данных. (Для каждого теста удобно формировать свою базу данных.)
- Выберите из базы данных всех пользователей, которые используют оболочку
/bin/bash
. Для этого воспользуйтесь алгоритмомstd::ranges::find_if
. - Создайте сортированный вариант базы данных, используя
std::map
. Затем выберите из этой базы данных всех пользователей, идентификатор которых больше или равен 0 и меньше 1000, используянаиболее подходящие для этого методы классаstd::map
. - Определите, сколько пользователей использует каждую из оболочек, которые есть в базе данных. Для этого воспользуйтесь
std::unordered_map
. - Выберите всех пользователей из базы данных, у которых дублируются идентификаторы. Для этого воспользуйтесь классом
std::unordered_set
.