Sono consapevole che la mappa non è pronta per essere ordinata, è fortemente ottimizzata per l'accesso rapido e casuale alla chiave., E in realtà non supporta std :: sort.Ordinamento di std :: mappa per valore prima dell'output e destroy
mio problema attuale è che ho un full
map<std::string,int>
che io non ho intenzione di usare più, ho solo bisogno di estrarre 10 coppie di valore (int) ordine e distruggerla.
La cosa migliore, se fosse possibile, sarebbe quella di ordinarlo e poi ripeterlo per 10 volte, ma a quanto pare non è una soluzione.
Sto provando diverse soluzioni passando da una multimappa (per consentire chiavi duplicate), ma mi piacerebbe sapere se c'è una soluzione più elegante, utilizzando gli algoritmi di stl il più possibile.
EDIT:
Sto utilizzando una mappa perché per il 99% del tempo ho bisogno di una mappa, le ricerche fondamentali veloci per aumentare i valori. Ho solo bisogno di un buon metodo per estrarre in un secondo momento l'ordine dei valori quando non ho più bisogno della mappa.
approccio attuale whould essere:
- std :: copiare la mappa (std :: string, int) per un vettore (coppia (std :: string, int))
- sorta vettore
- ottenere i primi 10 valori
- distruggono vettoriale e mappa
Le vostre esigenze sono molto poco chiare per me. IIUC, devi trovare 10 voci nella mappa _ dal loro valore_ invece della loro chiave? E una volta che li hai, cosa hai intenzione di fare con loro? Chiedo perché "distruggere" è un termine vago e non riesco a indovinare il significato di un 'std :: pair'. Devono essere rimossi dalla mappa? (Probabilmente no, visto che hai detto che non hai più bisogno della mappa, ma che altro?) –
sbi
La mappa verrà distrutta quindi non mi interessa cosa succederà dopo, basta avere quei 10 valori –