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!

Reply via email to