Delphi 如何检测何时增加大小t字典
我使用TDictionary来处理大量数据。如何检测大小增加的时刻词典?如果希望检测底层专用存储何时增长,则无法检测。这是由私有方法Delphi 如何检测何时增加大小t字典,delphi,generics,Delphi,Generics,我使用TDictionary来处理大量数据。如何检测大小增加的时刻词典?如果希望检测底层专用存储何时增长,则无法检测。这是由私有方法SetCapacity和Grow处理的,该类不提供外部钩子 您可以使用OnKeyNotify和OnValueNotify事件检测密钥和值修改。添加新密钥时,OnKeyNotify事件会在通知参数为cnAdded的情况下触发。实际上它也会在从Add和AddOrSetValue-DRY any-触发的Grow方法中完成-@StefanGlienke叹息。显然Grow应该
SetCapacity
和Grow
处理的,该类不提供外部钩子
您可以使用
OnKeyNotify
和OnValueNotify
事件检测密钥和值修改。添加新密钥时,OnKeyNotify
事件会在通知参数为cnAdded
的情况下触发。实际上它也会在从Add和AddOrSetValue-DRY any-触发的Grow方法中完成-@StefanGlienke叹息。显然Grow
应该调用SetCapacity
。看看一个如何使用清晰易懂的*2
,另一个如何使用神秘的shl 1
。在这种情况下,Grow是内部的优化版本,它只被称为带有清晰的前提条件,所以我认为这不是干巴巴的。SetCapacity不仅仅是容量的两倍,它还对输入值执行一些检查,而Grow不需要这些检查。好的,一个使用shl1,另一个使用shl2,但除此之外,我认为这很有意义。@Rudy。再灰烬淹没了支票。但即使您想要prem opt,也可以使用内部未选中的DoSetCapacity来完成。干燥是很重要的。此代码失败。@Rudyvelthui的SetCapacity是私有的,而TDictionary没有Capacity属性,因此这也是内部的。在其他情况下(TList、TQueue),内部调用SetCapacity。