Jestem byłym C++/STL programista próbuje zakodować szybki algorytm marszu przy użyciu C# /. NET ...Znajdź albo włożyć tylko jeden odnośnika w C# słowniku
Szukam odpowiednik metody STL "map :: insert", która wstawi wartość w danym kluczu, jeśli nie istnieje, w przeciwnym razie zwraca iterator do istniejącej pary klucz-wartość.
Jedynym sposobem znalazłem robi to z dwóch wyszukiwań: jeden wewnątrz TryGetValue a drugi w metodzie Add:
List<Point> list;
if (!_dictionary.TryGetValue (pcost, out list))
{
list = new List<Point>();
dictionary.Add (pcost, list);
}
list.Add (new Point { X = n.x, Y = n.y });
Czy istnieje coś, co wyjaśnia, dlaczego nie jest to możliwe przy użyciu kontenerów .NET? A może przegapiłem jakiś punkt?
Dzięki.
Czy na pewno wykonuje dwa wyszukiwania nawet w kodzie produkcyjnym? – CodingBarfield
Czy podwójny wygląd naprawdę ma znaczenie? Różnica w czasie jest marginalna. –
@ Chris: co? nie masz żadnego benchmarku, aby to poprzeć, nie mówiąc już o benchmarku stosownym do wzorców użycia OP;) - Mogę pokazać ci kod tam, gdzie ma to znaczenie (och, czekaj, nie mogę z powodów prawnych ...) – sehe