Prerequisito: std::mappa , std::unordered_map
Quando si tratta di efficienza, c’è un’enorme differenza tra mappe e mappe non ordinate.
Dobbiamo conoscere il funzionamento interno di entrambi per decidere quale utilizzare.
Differenza:
| map | unordered_map --------------------------------------------------------- Ordering | increasing order | no ordering | of keys(by default) | Implementation | Self balancing BST | Hash Table | like Red-Black Tree | search time | log(n) | O(1) ->Nella media | | O(n) -> Tempo di inserimento nel caso peggiore | log(n) + Ribilancia | Uguale alla ricerca Ora di eliminazione | log(n) + Ribilancia | Uguale alla ricerca>
Usa std::map quando
- Hai bisogno di dati ordinati.
- Dovresti stampare/accedere ai dati (in ordine ordinato).
- Hai bisogno del predecessore/successore degli elementi.
- Scopri i vantaggi di BST rispetto a Hash Table per ulteriori casi.
CPP
cos'è l'uovo di pasqua android
// CPP program to demonstrate use of std::map> #include> int> main()> {> >// Ordered map> >std::map<>int>,>int>>ordine;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing ordered values> >for> (>auto> i = order.begin(); i> >!= order.end(); i++) {> >std::cout << ' : ' '
'; } }> |
>
git checkout
>Produzione
1 : 1 3 : 500 5 : 10 20 : 100>
Usa std::unordered_map quando
contatore Java
- È necessario tenere il conto di alcuni dati (esempio: stringhe) e non è richiesto alcun ordinamento.
- È necessario l'accesso a un singolo elemento, ovvero senza attraversamento.
CPP
// CPP program to demonstrate use of> // std::unordered_map> #include> int> main()> {> >// Unordered map> >std::unordered_map<>int>,>int>>ordine;> >// Mapping values to keys> >order[5] = 10;> >order[3] = 500;> >order[20] = 100;> >order[1] = 1;> >// Iterating the map and> >// printing unordered values> >for> (>auto> i = order.begin();> >i != order.end(); i++)> >{> >std::cout << ' : ' '
'; } }> |
inversione della stringa java
>
>Produzione
1 : 1 20 : 100 3 : 500 5 : 10>
Vediamo le differenze in forma tabellare:
| carta geografica | mappa_non ordinata | |
| 1. | la mappa è definita nel file di intestazione #include | unordered_map è definito nel file di intestazione #include |
| 2. | È implementato da albero rosso-nero . | È implementato utilizzando la tabella hash. |
| 3. | È lento. | È veloce. |
| 4. | Complessità temporale per le operazioni è O(log N) | La complessità temporale delle operazioni è O(1) |
| 5. | map viene utilizzata per memorizzare elementi come coppie chiave-valore in ordine ordinato per chiave. | unordered_map viene utilizzato per memorizzare elementi come coppie chiave-valore in ordine non ordinato. |