“multiset” e “multimap”: qual è il punto?
-
27-09-2019 - |
Soluzione
Alcuni casi d'uso:
multimappa
- Con il codice postale come chiave, tutte le persone che hanno quel codice postale
- Con l'ID conto come chiave, tutti gli ordini aperti di quella persona/conto
- Un dizionario, con varie spiegazioni per parola chiave
multiinsieme
è in sostanza una mappa con una chiave e un conteggio intero.
- L'inventario di un negozio, tutti i prodotti hanno la loro chiave e l'importo ancora disponibile è il valore
- Dati di vendita accumulati di un negozio, ogni volta che un prodotto viene venduto, l'ID prodotto viene aggiunto al multiset aumentando così l'importo venduto
Altri suggerimenti
Un esempio in cui un multimap sarebbe utile se si ha una situazione in cui la maggior parte del tempo i tasti sono unici, ma a volte non lo sono.
Ad esempio, se si vuole creare una classe cache che ha utilizzato un hash come chiave. Il più delle volte due oggetti diversi non avrà lo stesso hash, in modo che le chiavi saranno unici. Ma è possibile che si otterrà collisioni hash per oggetti diversi, in modo che si vorrebbe un multimap per coprire questa situazione.
Un altro esempio potrebbe essere qualsiasi tipo di indice non univoco (come in un database).
Per quanto riguarda un MultiSet - penso che quelli sarebbero meno utile. L'unica cosa che mi viene in mente sarebbe quello di usarlo come una sorta di lista ordinata automaticamente.
Un multinsieme o MultiMap è semplicemente per le situazioni in cui ci potrebbe essere più di uno di un elemento particolare. Per esempio, diciamo che si voleva creare un indice per un libro. Faresti la scansione attraverso il testo, buttare via tutte le parole in realtà comuni senza senso ( "a", "an", "il", ecc) e poi fare una lista di tutto il resto, e il posto nel libro in cui ogni si è verificato.
Un bel po 'delle parole appariranno in più di una pagina, nel qual caso si dovrà più voci mappatura da una parola a pagine diverse. Un modo per gestire che sarebbe un multimap dalle parole ai numeri di pagina.
http://www.cplusplus.com/reference/stl/multimap/
Le mappe sono una sorta di associativa contenitori che memorizza elementi formati dalla combinazione di un valore di chiave e un valore mappato, molto simile mappa contenitori, ma permettendo differente elementi hanno lo stesso valore di chiave.
E 'sorta di registro in cui gli elementi possono condividere una chiave. Si può pensare di aziende e dipendenti. indirizzo è una chiave e dipendenti sono valori.
Ecco cosa Wikipedia dice di usi:
- In un sistema di iscrizione degli studenti, dove gli studenti possono essere iscritti più classi contemporaneamente, ci potrebbe essere un'associazione per ciascun iscrizione di uno studente in un corso, dove la chiave è l'ID studente e il valore è l'ID corso. Se un studente è iscritto a tre corsi, ci saranno tre associazioni contenente la stessa chiave.
- L'indice di un libro può segnalare qualsiasi numero di riferimenti per un determinato indice termine, e quindi può essere codificata come multimap da termini indice a qualsiasi numero di posizioni di riferimento
Usa multimappa, ovunque si desidera utilizzare albero tipo di struttura.
Il più importante vantaggio di utilizzare un multiset su un vettore / lista (o qualsiasi altro contenitore) è la complessità temporale di un'operazione di ricerca. media complessità caso il tempo per multinsieme è O (log n) e unordered_multiset è O (1). Lo stesso vale per multimap e ordered_multimap.