Сортировка std :: map по значению перед выводом и уничтожением
Я знаю, что карта не готова к сортировке. Это'сильно оптимизирован для быстрого и случайного доступа к ключу и фактически нет поддержки.std::sort
Моя текущая проблема заключается в том, что яве полныйmap
который яЯ больше не буду использовать. Мне просто нужно извлечь 10 пар вvalue(int)
заказать и уничтожить его.
Лучше всего, если бы это было возможно, было бы отсортировать его на месте, а затем повторить его 10 раз, но это, очевидно, не является решением.
я пробую разные решения, как проходя черезmultimap
(чтобы разрешить дубликаты ключей), но яХотелось бы узнать, есть ли более элегантное решение, максимально используя алгоритмы stl.
EDIT: Я
Я использую карту, потому что в 99% случаев она мне нужна как карта: быстрый поиск клавиш для увеличения значений. Просто нужен хороший способ последующего извлечения в порядке стоимости, когда я некарта больше не нужна
Текущий подход должен быть:
std::copy
map(std::string,int)
кvector(pair(std::string,int))
сортировать векторполучить первые 10 значенийуничтожить вектор и карту