Есть ли что-нибудь доступное, реализованное как Loki's AssocVector, но с функциональностью Boost's Bimap? - PullRequest
4 голосов
/ 16 ноября 2010

Интересно, кто-нибудь знает о каком-либо коде библиотеки, который имеет характеристики производительности, предоставляемые Loki's AssocVector (местность ссылок элементов, меньшие накладные расходы памяти на элемент по сравнению с картой), но с функцией Boost BiMap (способной запрашиватькарта с обеих сторон отношения)?

Или будет использовать отсортированный std :: vector из std :: pair и добавит функциональность для поиска вектора, используя любой элемент пары в качестве ключа, как путь вперед

1 Ответ

1 голос
/ 16 ноября 2010

Это действительно зависит от того, что вы хотите сделать быстро.Loki::AssocVector имеет O ( n ) для вставки и удаления, в то время как boost::bimap имеет O (1), когда вы используете его с хеш-таблицами.Если вы можете жить с O ( n ) операциями в одном «представлении» вашей структуры данных и O (lg n ) в другом, то предложенное вами решение будет работать нормально и приметмало памяти.Это может быть очень быстро для небольших наборов данных, если преобладают операции с одним представлением.

Вы также можете рассмотреть возможность использования Boost.Intrusive или boost::bimap со специализированными распределителями.

...