Min-Heap and Hash Table help
Chris Pons
cmpons at gmail.com
Tue Apr 3 12:38:11 PDT 2012
Thanks, yes, that did work. However now when trying to insert
nodes I get this error: Cannot grow a heap created over a range.
I This is what I have:
Node[] a;
auto b = BinaryHeap!(Node[], "a.fScore > b.fScore")(a);
Node test, test2;
test2.fScore = 9;
test.fScore = 10;
b.insert( test );
I also tried this:
Node[2500] a;
auto b = BinaryHeap!(Node[], "a.fScore > b.fScore")(a);
Node test, test2;
test2.fScore = 9;
test.fScore = 10;
b.insert( test );
It gives the same error.
I also tried this:
Node[2500] a;
auto b = BinaryHeap!(Array!Node, "a.fScore > b.fScore")(a);
Node test, test2;
test2.fScore = 9;
test.fScore = 10;
b.insert( test );
Error 1 Error: this._store()[this._length()] is not an
lvalue C:\DLang\dmd2\src\phobos\std\container.d 2676
How exactly would I grow this heap? or How would I give it enough
room so that I don't need to make it larger?
On Tuesday, 3 April 2012 at 11:28:06 UTC, Timon Gehr wrote:
> On 04/03/2012 05:17 AM, Chris Pons wrote:
>> I'm still having troubles with the min-heap.
>>
>> Node[] a;
>> auto b = BinaryHeap!"a.fScore > b.fScore"( a[] );
>>
>>
>> Error 1 Error: template instance BinaryHeap!("a.fScore >
>> b.fScore") BinaryHeap!("a.fScore > b.fScore") does not match
>> template declaration BinaryHeap(Store,alias less = "a < b") if
>> (isRandomAccessRange!(Store) ||
>> isRandomAccessRange!(typeof(Store.init[])))
>> C:\Users\CP\Documents\Visual
>> Studio 2010\Projects\D\STDS\NPC.d 252
>>
>
> That is an API design issue. This should work:
>
> auto b = BinaryHeap!(Node[], "a.fScore > b.fScore")(a);
More information about the Digitalmars-d-learn
mailing list