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