Mam TDictionary jakpoprawny sposób dysponowania TDictionary po sortowaniu go do tablicy
target_results : TDictionary<longint,double>;
Po wypełniania go trzeba posortować wyniki. Robię to w ten sposób:
type
TSearchResult = TPair<longint,double>;
var
target_results_array : TArray<TSearchResult>;
target_results_array:= target_results.ToArray;
TArray.Sort<TSearchResult>(best_knowledge_search_results,
TComparer<TSearchResult>.Construct(
function(const L, R: TSearchResult): Integer
begin
if L.Value < R.Value then Result := 1 else if L.Value > R.Value then Result := -1 else Result := 0;
end
));
Wszystko działa zgodnie z oczekiwaniami. Moje pytanie brzmi: jak pozbyć się TDictionary i TArray bez żadnych wycieków? Obecnie jestem po prostu robi
target_results.Free;
Nie rozumiem, dlaczego używasz słownika. Wygląda na to, że powinna to być TList. –
@DavidHeffernan Wykonuję kilka zapytań, aby określić ostateczny wynik. Każde zapytanie dostarcza zbioru wyników cząstkowych. Używam TDictionary.AddOrSetValue w celu dodania nowego wpisu lub dodania podsumy do istniejącego klucza. Czy uważasz, że jest to najbardziej wydajna struktura, aby to dopasować? Dzięki! –
Jeśli wykonujesz wyszukiwanie klucza, słownik jest dobry. Oczywiście ten aspekt nie jest w Q, stąd moje zapytanie. Wygląda jednak na to, że masz odpowiednią strukturę danych. –