В этом задании вам необходимо
написать bimap
Интерфейс вы найдете в репозитории, в файле bimap.h
bimap
— это структура данных, в которой хранится набор пар и эффективно
выполняется поиск ключа по значению. В отличие от map
, поиск в bimap
может
выполняться как по левым (left) элементам пар, так и по правым (right).
bimap
параметризуется 2 типами (left и right) и 2 компараторами, которые
определяют порядок на этих типах.
Итераторы вашего bimap
должны повторять соответствующее поведение для map
и
позволять проходить все элементы с одной стороны в порядке, определенном
переданным компаратором.
Вам предлагается с помощью описания изложенного выше, интерфейсу и уже
пройденным материалам курса придумать и реализовать bimap
, эффективный по:
- Использованию памяти
- Общему количеству аллокаций
- Пустое дерево не должно делать никаких динамических аллокаций
- Пустые компараторы не должны занимать дополнительную память
- Скорости операций
- Количеству копипасты, особенно стоит присмотреться к итераторам