Необходимо реализовать Proxy (заместитель) для контейнера map, управляющий доступом.
Реализовать надстройку над стандартным контейнером map, которая позволяла бы управлять доступом к определённым ключам (с разграничением чтения, записи и удаления), а также подменять при необходимости возвращаемые результаты.
В этой системе присутствует три класса:
std::map – базовый контейнер.Auditor – базовый класс «аудитора», реализующий проверку прав и замену значений.ProxiedMap – надстройка над контейнером, которая все операции с ним предваряет вызовом объекта Auditor.Реализовать несколько подклассов для Auditor (всё разрешающий, разрешающий только чтение, подменяющий значения по заданным ключи константным значением и т.д.)
Разработать набор тестов, проверяющий, действительно ли блокируются попытки несанкционированного доступа (для разных Auditor).
Реализовать несколько видов итераторов (например: итератор, обходящий все доступные ключи; итератор, обходящий все ключи, но сигнализирующий об ошибке доступа при попытке обращения и т.д.).