Constructor.
Destructor. All nodes are cleared.
Return forward range of keys, over all elements.
Return forward range of a struct that has .key and .value.
Return forward range of values, over all elements.
Search for an element.
Is this B-Tree empty?
Insert an element in the container.
Number of items in the B-Tree.
in operator. Check to see if the given element exists in the container. In case of duplicate keys, it returns one of those, unspecified order.
Index the B-Tree by key.
Erases an element from the tree, if found.
Called "t" or "minimum degree" in litterature, can never be < 2. Make it lower (eg: 2) to test tree algorithms. See <digression> below to see why this is not B-Tree "order".
Btree Range
An implementation of a vanilla B-Tree.
The API should looks closely like the builtin associative arrays. O(lg(n)) insertion, removal, and search time. This BTree is designed to operate even without initialization through makeBTree.
Note: the keys don't need opEquals, but !(a < b) && !(b > a) should imply that a == b
Reference: http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap19.htm
https://en.wikipedia.org/wiki/B-tree