Creating a RedBlackTree

Bogdan olar.bogdan.dev at gmail.com
Wed May 15 13:42:14 UTC 2019


On Wednesday, 15 May 2019 at 13:15:50 UTC, Stefan Koch wrote:
> Key controller cannot be compared by less
> which is why it fails, give it an opCmp and it'll work.

Works fine, thank you! For some reason, I thought that this 
template uses references:
```
enum KeyID: uint
{
	KEY_A,
	KEY_S,
	KEY_D,
	KEY_W
}

struct KeyController
{
	KeyID ID;
	bool isDown;

	int opCmp(ref const KeyController other) const {return this.ID - 
other.ID;}
}

void main()
{
	KeyController[] monitoredKeys = [{KeyID.KEY_A}];

	auto rbt = redBlackTree!KeyController;

	rbt.insert(monitoredKeys);
	writeln(rbt);
	monitoredKeys[0].isDown = true;
	writeln(rbt);
}
```

Output:
```
RedBlackTree([const(KeyController)(KEY_A, false)])
RedBlackTree([const(KeyController)(KEY_A, false)])
```






More information about the Digitalmars-d-learn mailing list