Есть ли способ отсортировать std::map по данным, а не по ключу? Прямо сейчас мой код дублирует всю карту в массив только для этого.
std::map сортировать по данным?
comment
Думаю, вам нужна другая карта с перевернутым ключом/значением?
- person Daniel Mošmondor   schedule 22.10.2010
comment
Тоже не нашел нормального решения. Вы не можете просто поменять местами карту (как многие предлагают), потому что два значения могут быть одинаковыми, создавая новую карту, которая может иметь меньше элементов. На самом деле невозможно отсортировать карту по значению, так как карта сортируется по ключу (отсюда и скорость). Даже если вы попытаетесь создать новую отсортированную карту, вставив значения как вектор, вы все равно получите карту, отсортированную по ключу!!! Способ, который я внедрил в свой код, заключался в создании отсортированных векторов для каждого из ключей и значений и использовании векторов в моем приложении. Чтобы сделать векторы, я сначала
- person ryanmartinneutrino   schedule 03.07.2013
comment
Возможный дубликат карты STL--› отсортировать по значению?
- person Ciro Santilli 新疆再教育营六四事件ۍ   schedule 01.01.2017
comment
Возможный дубликат Сортировка std::map по значению
- person Baum mit Augen   schedule 01.03.2019
Ответы (1)
Насколько я помню, std::map
даст вам итератор, который будет проходить по элементам, отсортированным по ключу. Единственный способ просмотреть отсортированные элементы по значению и по-прежнему использовать карту — это переписать всю коллекцию на другую карту, поменяв местами ключ и значение.
person
Daniel Mošmondor
schedule
22.10.2010
Я обнаружил, что лучше использовать один вектор и просто находить что-то.
- person Jookia; 22.10.2010
Если вы это сделаете, вы потеряете информацию о паре ключ-значение.
- person Peter Lee; 25.06.2013
Я указываю на ответ Оли Чарльзворта на stackoverflow.com/a/5056797/158371
- person Christian Severin; 03.12.2013