Module std.algorithm
This package implements generic algorithms oriented towards the processing of sequences. Sequences processed by these functions define range-based interfaces. See also Reference on ranges and tutorial on ranges.
Algorithms are categorized into the following submodules:
Category | Submodule | Functions |
---|---|---|
Searching | std.algorithm.searching |
all
|
Comparison | std.algorithm.comparison |
among
|
Iteration | std.algorithm.iteration |
cache
|
Sorting | std.algorithm.sorting |
completeSort
|
Set operations | std.algorithm.setops |
cartesianProduct
largestPartialIntersectionWeighted
|
Mutation | std.algorithm.mutation |
bringToFront
|
Many functions in this package are parameterized with a function or a
predicate. The predicate may be passed either as a
function name, a delegate name, a functor name, or a
compile-time string. The string may consist of any legal D
expression that uses the symbol a
(for unary functions) or the
symbols a
and b
(for binary functions). These names will NOT
interfere with other homonym symbols in user code because they are
evaluated in a different context. The default for all binary
comparison predicates is "a == b"
for unordered operations and
"a < b"
for ordered operations.
Example
int[] a = ...; static bool greater(int a, int b) { return a > b; } sort!(greater)(a); // predicate as alias sort!("a > b")(a); // predicate as string // (no ambiguity with array name) sort(a); // no predicate, "a < b" is implicit