Правильный способ избавиться от TDictionary после сортировки его в массив

У меня есть TDictionary вроде

target_results : TDictionary<longint,double>;

После заполнения мне нужно отсортировать результаты. Я делаю это так

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
                    ));

Все работает как положено. Мой вопрос заключается в том, как избавиться от TDictionary и TArray без каких-либо утечек? В настоящее время я просто делаю

target_results.Free;

1 ответ

Решение

Поскольку ваши данные представляют собой longints и double, которые являются типами значений, освобождение словаря будет работать нормально. Ваш массив будет содержать копию исходных значений, и вам не нужно беспокоиться о потере или повреждении чего-либо.

Если у вас вместо этого были типы объектов, и у вас был TObjectDictionary если вы владеете объектами, то вам придется беспокоиться о подобных вещах, но для чисто числовых данных у вас все в порядке.

Другие вопросы по тегам