C'è un modo per ordinare std :: map in base ai dati anziché alla chiave? In questo momento il mio codice duplica l'intera mappa in un array solo per farlo.std :: map ordina per dati?
risposta
Per quanto posso ricordare, std::map
ti darà l'iteratore che passerà attraverso gli elementi ordinati dalla chiave. L'unico modo per esaminare gli elementi ordinati in base al valore e utilizzare comunque la mappa è riscrivere l'intera raccolta su un'altra mappa, con chiave e valore invertiti.
Ho scoperto che usare un singolo vettore e semplicemente trovare le cose era meglio. – Jookia
In tal caso, si perderanno le informazioni sulla coppia valore-chiave. –
Indico la risposta di Oli Charlesworth all'indirizzo http://stackoverflow.com/a/5056797/158371 –
- 1. di riferimento come chiave per std :: map
- 2. std :: map con std :: chiave weak_ptr
- 3. std :: map thread-safety
- 4. Quando scegliere std :: vector su std :: map per i dati valore-chiave?
- 5. Doxygen riconosce std :: shared_ptr o std :: map
- 6. std :: map valore predefinito per le enumerazioni
- 7. Scelta tra std :: map e std :: unordered_map
- 8. Usa std :: reference_wrapper in std :: map
- 9. Mappatura std :: map a Python
- 10. C++: Ereditato da std :: map
- 11. utilizzando BOOST_FOREACH con std :: map
- 12. Porting std :: map to C?
- 13. recupera l'elemento chiave casuale per std :: map in C++
- 14. C++ std :: map domanda sull'ordine iteratore
- 15. casi struct memorizzazione in uno std :: map
- 16. jQuery Isotope - ordina i dati per "gruppo"
- 17. Rails - Ordina per dati tabella join
- 18. Ordina dati per il percorso d3.js
- 19. ordina per JSON tipo di dati postgres
- 20. Assegnare valori multipli a std :: array in std :: map
- 21. Copia std :: map in std :: set in C++
- 22. Perché può usare const char * come chiave per std :: map <std :: string, int>
- 23. Perché std :: map < std::map > non rilascia la memoria?
- 24. Utilizzo di std :: reference_wrapper come chiave in una std :: map
- 25. Utilizzo di std shared_ptr come std :: map key
- 26. Ordina mappa per valore
- 27. std :: map find_if condition confusion style
- 28. std :: map :: emplace() mancante - librerie obsolete?
- 29. std :: map e -fno-implicit-templates
- 30. C'è un modo per intersecare/diff uno std :: map e uno std :: set?
Indovina che hai bisogno di un'altra mappa con chiave/valore invertito? –
Non ho trovato una buona soluzione. Non puoi semplicemente scambiare la mappa (come molti suggeriscono) perché due valori potrebbero essere gli stessi, creando una nuova mappa che potrebbe avere meno elementi. In effetti ** è impossibile ** ordinare una mappa in base al valore, in quanto una mappa è ordinata per chiave (quindi perché è veloce). Anche se provi a creare una nuova mappa che viene ordinata, spingendo i valori come un vettore, ti ritroverai comunque con una mappa ordinata per tasto !!! Il modo in cui ho implementato il mio codice è stato quello di creare vettori ordinati per ciascuna delle chiavi e dei valori e utilizzare i vettori nella mia applicazione. Per creare i vettori, prima io – user2544830
Possibile duplicato di [mappa STL -> ordina per valore?] (Http://stackoverflow.com/questions/2699060/stl-map-sort-by-value) –