È O (1) o O (logN) ma con un coefficiente più basso?Qual è la complessità di map/set :: insert se è stato fornito un suggerimento iteratore corretto?
Se ciò non è specificato, mi piacerebbe almeno conoscere la risposta sulla base di una ragionevole supposizione che la mappa/insieme sia implementata utilizzando un albero rosso-nero o AVL. L'algoritmo generale per inserire un elemento, a mio avviso, è qualcosa di simile:
- trovare il posto giusto - O (log N)
- fare l'inserimento effettivo -?
- riequilibrare l'albero se necessario -?
Ora se mettiamo a disposizione il corretto suggerimento iteratore, quindi il primo passo diventa O (1). Anche le altre fasi sono O (1) o O (logN)?
Pensaci. Quali passi faresti se stessi scrivendo il metodo di inserimento? Quali passi faresti se dovessi riequilibrare l'albero? I passaggi dipendono dal numero di nodi? –
Ecco alcune risposte che potrebbero essere utili: [stl-map-performance] (http://stackoverflow.com/questions/10165708/stl-map-performance), [why-is-stdmap-implement-as-red -black-tree] (http://stackoverflow.com/questions/5288320/why-is-stdmap-implemented-as-red-black-tree), [difference-between-red-black-trees-and-avl- alberi] (http: // StackOverflow.it/questions/16257761/difference-between-red-black-trees-and-avl-trees) – nouney