读delphi源码 TList.Grow的问题 ( 积分: 10 )

  • 主题发起人 主题发起人 wuqvei
  • 开始时间 开始时间
W

wuqvei

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TList.Grow;
var
Delta: Integer;
begin
if FCapacity > 64 then
Delta := FCapacity div 4
else
if FCapacity > 8 then
Delta := 16
else
Delta := 4;
SetCapacity(FCapacity + Delta);
end;

没看懂为什么作判断来增加容量 多谢指点
 
procedure TList.Grow;
var
Delta: Integer;
begin
if FCapacity > 64 then
Delta := FCapacity div 4
else
if FCapacity > 8 then
Delta := 16
else
Delta := 4;
SetCapacity(FCapacity + Delta);
end;

没看懂为什么作判断来增加容量 多谢指点
 
请各位指点一下 谢谢
 
你想,如果你本身只有10个节点,下一次增加你会增加多少个?如果你本身有10000个节点,下一次增加你会一次性增加多少个?
他这样做是根据当前结点数目来估计以后可能会有多少个节点会被加入的一种方法而已。你也可以一次就增加一个节点(Delta := 1),只不过这样在大多数情况下就会降低效率。
 
后退
顶部