std.container.rbtree.red_black_tree
- multiple declarations
- Function redBlackTree
- Class RedBlackTree
Function redBlackTree
Convenience function for creating a
from a list of
values.
RedBlackTree
!E
Prototypes
auto redBlackTree(E)( E[] elems ); auto redBlackTree(bool allowDuplicates, E)( E[] elems ); auto redBlackTree(alias less, E)( E[] elems ); auto redBlackTree(alias less, bool allowDuplicates, E)( E[] elems ) if (is(typeof(binaryFun!less(E.init, E.init))));
Example
auto rbt1 = redBlackTree(0, 1, 5, 7); auto rbt2 = redBlackTree!string("hello", "world"); auto rbt3 = redBlackTree!true(0, 1, 5, 7, 5); auto rbt4 = redBlackTree!"a > b"(0, 1, 5, 7); auto rbt5 = redBlackTree!("a > b", true)(0.1, 1.3, 5.9, 7.2, 5.9);
Class RedBlackTree
Implementation of a red-black tree container.
All inserts, removes, searches, and any function in general has complexity
of Ο(lg(n)
).
To use a different comparison than "a < b"
, pass a different operator string
that can be used by std.functional.binaryFun
, or pass in a
function, delegate, functor, or any type where less(a, b)
results in a bool
value.
Note that less should produce a strict ordering. That is, for two unequal
elements a
and b
, less(a, b) == !less(b, a)
. less(a, a)
should
always equal false
.
If allowDuplicates
is set to true
, then inserting the same element more than
once continues to add more elements. If it is false
, duplicate elements are
ignored on insertion. If duplicates are allowed, then new elements are
inserted after all existing duplicate elements.
Inherits from
-
(base class)Object
Constructors
Name | Description |
---|---|
this
|
Constructor. Pass in an array of elements, or individual elements to initialize the tree with. |
this
|
Properties
Name | Type | Description |
---|---|---|
dup
[get]
|
RedBlackTree |
Duplicate this container. The resulting container contains a shallow copy of the elements. |
empty
[get]
|
bool |
Check if any elements exist in the container. Returns false if at least
one element exists.
|
length
[get]
|
size_t |
Returns the number of elements in the container. |
Methods
Name | Description |
---|---|
back
|
The last element in the container |
clear
|
Removes all elements from the container. |
equalRange
|
Get a range from the container with all elements that are == e according
to the less comparator
|
front
|
The front element in the container
|
lowerBound
|
Get a range from the container with all elements that are < e according
to the less comparator
|
opEquals
|
Compares two trees for equality. |
opSlice
|
Fetch a range that spans all the elements in the container. |
remove
|
Removes the given Take! from the container
|
remove
|
Removes the given range from the container. |
removeAny
|
Remove an element from the container and return its value. |
removeBack
|
Remove the back element from the container.
|
removeFront
|
Remove the front element from the container.
|
upperBound
|
Get a range from the container with all elements that are > e according
to the less comparator
|
factory
|
Create instance of class specified by the fully qualified name
classname .
The class must either have no constructors or have
a default constructor.
|
opCmp
|
Compare with another Object obj.
|
toHash
|
Compute hash function for Object .
|
toString
|
Convert Object to a human readable string.
|
Inner structs
Name | Description |
---|---|
Range
|
The range type for
|
Aliases
Name | Description |
---|---|
Elem
|
Element type for the tree |
insert
|
Insert a range of elements in the container. Note that this does not invalidate any ranges currently iterating the container. |
Templates
Name | Description |
---|---|
opBinaryRight
|
in operator. Check to see if the given element exists in the
container.
|
removeKey
|
Removes elements from the container that are equal to the given values
according to the less comparator. One element is removed for each value
given which is in the container. If allowDuplicates is true,
duplicates are removed only if duplicate values are given.
|
stableInsert
|
Insert a range of elements in the container. Note that this does not invalidate any ranges currently iterating the container. |
stableInsert
|
Insert a single element in the container. Note that this does not invalidate any ranges currently iterating the container. |
this
|
Constructor. Pass in a range of elements to initialize the tree with. |
Authors
Steven Schveighoffer, Andrei Alexandrescu
License
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ).