AA.remove in foreach && AA = new vs cleaning
schveiguy at yahoo.com
Wed Oct 21 20:08:46 PDT 2009
On Wed, 21 Oct 2009 23:06:47 -0400, Saaa <empty at needmail.com> wrote:
> Is there anything with removing the current key in a foreach?
> foreach (K k, ; aa)
Yes, behavior is undefined.
from http://digitalmars.com/d/2.0/statement.html#ForeachStatement :
"The aggregate must be loop invariant, meaning that elements to the
aggregate cannot be added or removed from it in the [loop body]"
I have gotten around this in dcollections by removing elements outside the
loop body. See for example the keypurge function of HashMap
More information about the Digitalmars-d-learn