On Wednesday, 5 August 2015 at 01:27:53 UTC, Steven Schveighoffer
wrote:
On 8/4/15 9:02 PM, DarthCthulhu wrote:
writefln("PQ: %s", pq.queue); <- prints PQ: [Tuple!(int,
string)(3,
"HELLO3"), Tuple!(int, string)(10, "HELLO10"), Tuple!(int,
string)(11,
"HELLO11")]
This is probably consuming your queue, popping all the data off
as it prints. If you print the length before hand, I'll bet
it's not zero.
Aha! Yes, you are correct. I didn't know writefln was popping
elements off the heap. I thought it would've just walked down the
heap without altering it at all. Interesting. Now I feel kinda
silly.
I don't know how to print the elements without removing them,
as binary heap doesn't have a range type, it seems to be the
range itself (an odd situation). Perhaps print the underlying
storage?
-Steve
Yeah, I think the thing to do would be to make a helper function
that would return the Array!(Tuple!) that the heap contains.
Maybe as a const reference to make sure a user doesn't
accidentally alter the array?
Thanks for your help!