> This is close to what I had in mind when I saw the #ifdef but is it
> the same thing? IIUC, in the original version, the loop will execute
> at least once. In this version, it may not execute at all (i.e., if
> __parent is zero).

  In the original version __parent is 0 only for __dist in [ 1; 2; 3 ].

  In this version __parent is 1 (will become 0 before calling __adjust_heap() 
due to
predecrement) for __dist in [ 2; 3 ].

  But when __dist == 1 (the heap contain's the exactly one element) there's no
sence to call __adjust_heap().

Farid.

Reply via email to