Я хочу сортировать элементы в контейнере карты, используя только значения, отличные от ключа. как это сделать? Я знаю, что карта может сортироваться по ключевому значению, но как сделать наоборот. Я нашел тот же вопрос в stackoverfrlow. Мне это нравится solution. Однако я хочу уточнить, что это означает «свалка в pair<K,V>
». Я не хочу создавать для вас особую структуру, она не изящна. как вы это реализуете? solution?C++, stl, map how sort with value, not key
3
A
ответ
19
Чтобы сбрасывать информацию с std :: map в std :: vector, вы можете использовать конструктор std :: vector, который принимает два итератора.
std::vector<std::pair<K,V> > myVec(myMap.begin(), myMap.end());
Вы бы затем отсортировать его:
std::sort(myVec.begin(),myVec.end(),&myFunction);
myFunction
будет функция, определенная с подписью:
bool myFunction(std::pair<K,V> first, std::pair<K,V> second);
ли он возвращает истину, если они находятся в правильном порядке (т.е. сначала должен быть до второго). Возвращайте false, когда они находятся в неправильном порядке (то есть секунда должна быть перед первым).
Кроме того, вы можете захотеть взглянуть на boost::bimap, который, кажется, более приспособленными к вашей проблеме.
Смежные вопросы
- 1. STL Map Value Constructors
- 2. Bucket Key Value Map?
- 3. C++ stl :: map find with structs
- 4. Key-value map in python
- 5. STL map output iterator lookup value
- 6. Spinner with Key-Value Pair
- 7. PHP sort array by key 'value'
- 8. Удаление элементов из подкаталога Key/Value Map?
- 9. как сделать stl :: map key case нечувствительный
- 10. Radix Sort with C++
- 11. numernate map enum pair (key-value)
- 12. Autocomplete with label, not value
- 13. C++ container search by key и value
- 14. xml with xsl: sort not sorting
- 15. C++ STL map :: find()
- 16. Java Дженерик Map Key-Value Typing
- 17. std :: map with cv :: Point as key
- 18. Map Array in C - Linked List w/Key: Value
- 19. Unset Not Clearing Array Key/Value
- 20. Firebase Key/Value access not working
- 21. Tapestry5 Value Encoder with Hibernate Composite Key
- 22. Ember template helper get-value-with-key
- 23. xsl: sort with apply-templates not sorting
- 24. Расширяет сбалансированный BST на C++ STL Map
- 25. help with set & map on STL для C++
- 26. C# JSON Сериализация словаря в {key: value, ...} вместо {key: key, value: value, ...}
- 27. Рамка для обработки сериализации в «key: value; key: value; key: value; key: value;» формат
- 28. Заменить std :: sort with boost :: sort
- 29. parse key-value in c
- 30. C++ STL map typedef ошибки
Целью карты является сортировка по ключевому слову ... вы не можете сортировать два в одно и то же время ... (i do not downvote :)) –
Что вы подразумеваете под "сортировать карту контейнера"? Собственно, сортируйте элементы или отмените роль ключа и значение в поиске? Под «демпингом в« паре »вы подразумеваете вставку новой пары« ключ/значение »из« пары »? (ум, я не был нисходящим) – ssube
Я отказался от вашего вопроса, потому что непонятно, в чем проблема. Что «не изящно»? У вас был три вопроса с тремя альтернативными решениями. –