Правильный способ избавиться от 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
если вы владеете объектами, то вам придется беспокоиться о подобных вещах, но для чисто числовых данных у вас все в порядке.