我有像
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;
最佳答案
由于您的数据都是longint和double值,它们都是值类型,因此释放字典可以很好地工作。您的数组将包含原始值的副本,并且您不必担心丢失或损坏任何内容。
如果您有对象类型,而拥有对象的TObjectDictionary
,那么您就不必担心这种事情,但是对于纯数字数据,您就可以了。
关于delphi - 将TDictionary排序为数组后的正确处理方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18042736/