§ 7. Контейнеры, итераторы, представления, алгоритмы

Задания

01Создайте базу данных пользователей операционной системы в виде std::vector<Account> и наполните ее тестовыми данными. Класс Account выглядит так:

struct Account {
  unsigned int id;            // идентификатор
  std::string login;          // логин
  std::string name;           // имя
  std::string shell;          // оболочка
  std::string home_directory; // домашняя директория
};

Затем выполните следующие задания в виде тестов для этой базы данных. (Для каждого теста удобно формировать свою базу данных.)

  1. Выберите из базы данных всех пользователей, которые используют оболочку /bin/bash. Для этого воспользуйтесь алгоритмом std::ranges::find_if.
  2. Создайте сортированный вариант базы данных, используя std::map. Затем выберите из этой базы данных всех пользователей, идентификатор которых больше или равен 0 и меньше 1000, используя наиболее подходящие для этого методыкласса std::map.
  3. Определите, сколько пользователей использует каждую из оболочек, которые есть в базе данных. Для этого воспользуйтесь std::unordered_map.
  4. Выберите всех пользователей из базы данных, у которых дублируются идентификаторы. Для этого воспользуйтесь классом std::unordered_set.