Sto provando a fare qualcosa di molto semplice ma sembra che non capisco SortedDictionary
.Come usare correttamente SortedDictionary in C#?
Quello che sto cercando di fare è la seguente:
creare un dizionario ordinato che ordina i miei oggetti da qualche numero virtuale, in modo da creare un dizionario che assomiglia a questo
SortedDictionary<float, Node<T>> allNodes = new SortedDictionary<float, Node<T>>();
Ed ora dopo ho aggiungere elementi, voglio rimuoverli uno per uno (ogni rimozione dovrebbe essere a una complessità di O (log (n)) dal più piccolo al più grande
Come faccio? Ho pensato che semplicemente allNodes[0]
sarà dammi il più piccolo, ma non lo è.
Inoltre, sembra che il dizionario non possa gestire chiavi duplicate. Mi sembra di utilizzare la struttura dati errata ...
Devo usare qualcos'altro se ho un mucchio di nodi che voglio essere ordinato in base alla loro distanza (virgola mobile)?
dizionario valori chiave devono essere univoci. Penso che tu voglia utilizzare una lista> poiché le liste possono avere voci duplicate. Quindi usa LINQ per manipolare i dati nell'ordine in cui desideri che siano. –
Vuoi semplicemente ordinare una raccolta di nodi in base ad un valore che ogni nodo ha, o c'è qualche ragione particolare per usare un 'SortedDictionary'? ? Se si tratta del primo, basta usare LINQ 'OrderBy' su qualunque sia la raccolta al momento dell'avvio. – Servy
Voglio inserire e rimuovere in O (Log (n)), la maggior parte del mio lavoro è inserire e rimuovere ... quale lista fa in O (N). e alla tua domanda: l'ordinamento è basato su un certo valore in ciascun nodo. – OopsUser