View source code Display the source code in std/container/rbtree.d from which this page was generated on github. Improve this page Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone. Page wiki View or edit the community-maintained wiki page associated with this page.

std.container.rbtree.red_black_tree - multiple declarations

Function redBlackTree

Convenience function for creating a RedBlackTree!E from a list of values.

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

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!Range 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 RedBlackTree

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 ).

Comments