On 12/11/2014 10:27 AM, Andrew Klaassen wrote: > If it is correct, is there any way to do it in D? > > Do I assume correctly that "myarray.keys[0]" would not meet the O(1) > requirement?
Correct. keys() is eager. For O(1) you want byKey(), which returns a lazy range but the code is less than pretty:
import std.stdio; void main() { auto aa = [ 1 : "one", 2 : "two" ]; while (true) { auto keys = aa.byKey; if (keys.empty) { break; } aa.remove(keys.front); } } Ali