Я знаю, что карта не готова к сортировке, ее сильно оптимизирован для быстрого и случайного доступа к ключам. И фактически не поддерживает std:: sort.
Моя текущая проблема в том, что у меня есть полный
map<std::string,int>
который я больше не буду использовать, мне просто нужно извлечь 10 пар в значение (int) и уничтожить его.
Лучше всего, если бы это было возможно, было бы сортировать его на месте, а затем повторять его 10 раз, но это, по-видимому, не является решением.
Я пытаюсь использовать разные решения, проходя через мультимап (чтобы дублировать ключи), но я хотел бы знать, есть ли более элегантное решение, используя алгоритмы stl, насколько это возможно.
EDIT:
Я использую карту, потому что в 99% случаев мне это нужно как карта, быстрый поиск ключей для увеличения значений. Просто нужен хороший способ последующего извлечения в стоимостном порядке, когда мне больше не нужна карта.
Текущий подход:
- std:: скопировать карту (std::string, int) в вектор (пара (std::string, int))
- сортировать вектор
- получить первые 10 значений
- уничтожить вектор и карту