Какой самый быстрый контейнер STL для поиска?

Хорошо, в качестве предисловия мне нужно кэшировать относительно небольшое подмножество редко изменяемых данных, чтобы не запрашивать базу данных так часто из соображений производительности. Эти данные широко используются только для чтения, поскольку на них часто ссылается гораздо больший набор данных в других таблицах.

Я написал класс, который будет иметь возможность хранить в основном все две таблицы. рассматриваемая в памяти при прослушивании изменений фиксации в сочетании с поточно-безопасным механизмом обратного вызова для обновления кешированных объектов.

Моя текущая реализация имеет два std :: vectors по одному для элементов каждой таблицы. Класс обеспечивает как доступ ко всем векторам, так и удобные методы для поиска определенного элемента данных таблицы через std :: find , std :: find_if и т. Д.

Кто-нибудь знает, используется ли std :: list , std :: set или std :: map вместо std :: vector для поиска предпочтительнее? В большинстве случаев это то, что будет запрашиваться у этих контейнеров после однократного заполнения из базы данных при создании нового соединения.

Я также открыт для использования функций C ++ 0x, поддерживаемых VS2010 или Boost.

31
задан chema989 25 July 2016 в 20:53
поделиться