проблема проста:
У нас есть класс, в котором есть члены a, b, c, d …
Мы хотим иметь возможность быстро искать (ключом является значение одного члена) и обновлять список классов новым значением, предоставляя текущее значение для a или b или c …
Я думал о том, чтобы иметь кучу
std::map<decltype(MyClass.a/*b,c,d*/),shared_ptr<MyClass>>
,
1) Это хорошая идея?
2) Превосходство мульти индекса индекса лучше, чем это решение ручной работы во всех отношениях?
PS SQL исключен из соображений простоты / совершенства.
Повышение MultiIndex может иметь явный недостаток, который он пытается сохранить все показатели в актуальном состоянии после каждой мутации коллекции.
Это может привести к значительному снижению производительности, если у вас есть фаза загрузки данных с множеством отдельных записей.
Шаблоны использования Boost Multi Index могут не соответствовать стилю кодирования (и вкусу …) проекта (участников). Это должно быть небольшим недостатком, но я думал, что упомяну это
Как ildjarn
Как уже упоминалось, Boost MI пока не поддерживает семантику перемещения
В противном случае я бы посчитал Boost MultiIndex превосходным в большинстве случаев, так как вряд ли вы достигнете объема полученного тестирования.
Вы хотите рассмотреть возможность размещения всех ваших карт в одном классе, произвольно выбрать один из контейнеров как тот, в котором хранятся «реальные» объекты, а затем просто использовать std::map
с отображенным типом необработанных указателей на элементы первого std::map
,
Однако это будет немного сложнее, если вам когда-нибудь понадобится сделать копии этих карт.