Сохраняется ли 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 не хранит значения непрерывно, хотя его индексы произвольного доступа обеспечивают векторный доступ, который может быть достаточно быстрым для ваших нужд.