Сохраняется ли boost::multi_index_container последовательно в памяти?

Я ищу последовательную структуру данных для быстрого времени итерации в сочетании с быстрым произвольным доступом через ключ. Более того, мне нужно эффективно вернуть ключ из индекса. В настоящее время я использую комбинацию разных коллекций из стандартной библиотеки.

std::vector<Value> values;
std::unordered_map<Key, size_t> indices;
std::unordered_map<size_t, Key> keys;

Это работает, но требует некоторого кода клея и может быть не так быстро, как это возможно. Это похоже на boost::multi_index_container делает именно то, что мне нужно. Однако хранит ли он значения в памяти последовательно?

1 ответ

Решение

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

Другие вопросы по тегам