I ' m ищу структуру данных с функциональностью, например, OrderedDictionary
в .NET, то есть ассоциативный набор (т.е. тот, который связывает ключ со значением ), который поддерживает порядок элементов (как и обычный List
).
Он должен иметь быстрый поиск как по индексу, так и по ключу.Он также должен иметь быструю операцию «добавления» (вставку нового элемента в конец) и быстрое удаление элементов с любым индексом (на основе индекса или ключа).
OrderedDictionary
в .NET, если я не ошибаюсь, использует как хеш-таблицу, так и массив для хранения своих элементов. Таким образом, получение индекса на основе ключа (или наоборот) составляет O (n) , и, конечно, удаление элемента из середины массива составляет O (n) до начать с плюс добавленный поиск индекса по ключу при удалении по ключу.
Мой вопрос: существует ли более эффективная структура данных, удовлетворяющая моим условиям, или это действительно лучший вариант?