Мне нужно решение, в котором будут храниться не уникальные пары ключей - значений. Я не хочу повторять клавиши (эффективность пространства), и я хочу сосредоточиться на скорости поиска (эффективность вставки новых данных менее важна). Здесь я буду использовать std :: multimap. Но мне придется искать ключи, которые соответствуют некоторым критериям диапазона.Какую структуру STL использовать?
Самый сложный пример: Ключ - это строка, значения не важны. Я хотел бы узнать все значения, ключи которых начинаются с «Lol». Или я хотел бы узнать все значения, ключи которых находятся между «" баром "и" foo ".
Могу ли я сделать это с помощью мультимапа? Моя вторая мысль - использовать отсортированный вектор, который будет указывать на векторы значений. Что-то вроде этого:
std::vector<std::string, std::vector<T>> sorted_vec;
Тогда я с легкостью отвечаю критериям поиска. Но я действительно забочусь о результатах поиска. Это правильный подход?
Похоже, что упорядоченная карта векторов больше по линии, которую вы описываете, но я не уверен, что она достаточно универсальна для вас. – WhozCraig
Если вставка не важна, я думаю, что '' vector'' будет предпочтительнее, чем '' map'' ', потому что последний основан на rb-tree. '' struct foo {}; вектор; '' может быть в порядке. –
gongzhitaao