View source code
Display the source code in std/algorithm/iteration.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.
Module std.algorithm.iteration
This is a submodule of std.algorithm. It contains generic iteration algorithms.
| Function Name | Description |
|---|---|
cache |
Eagerly evaluates and caches another range's front. |
cacheBidirectional |
As above, but also provides back and popBack. |
| chunkyBy |
chunkyBy!((a,b) => a[1] == b[1])([[1, 1], [1, 2], [2, 2], [2, 1]])
returns a range containing 3 subranges: the first with just
[1, 1]; the second with the elements [1, 2] and [2, 2];
and the third with just [2, 1]. |
each |
eagerly prints the numbers 1, 2
and 3 on their own lines. |
filter |
iterates over elements 1
and 2. |
filterBidirectional |
Similar to , but also provides back and popBack at
a small increase in cost. |
group |
returns a range containing the tuples
tuple(5, 1), tuple(2, 2), and tuple(3, 2). |
joiner |
returns a range that iterates
over the characters "hello; world!". No new string is created -
the existing inputs are iterated. |
map |
lazily returns a range with the numbers
2, 4, 6. |
reduce |
returns 10. |
splitter | Lazily splits a range by a separator. |
sum |
Same as , but specialized for accurate summation. |
uniq | Iterates over the unique elements in a range, which is assumed sorted. |
Functions
| Name | Description |
|---|---|
cache
|
eagerly evaluates front of
on each construction or call to popFront,
to store the result in a cache.
The result is then directly returned when front is called,
rather than re-evaluated.
|
cacheBidirectional
|
eagerly evaluates front of
on each construction or call to popFront,
to store the result in a cache.
The result is then directly returned when front is called,
rather than re-evaluated.
|
chunkBy
|
Chunks an input range into subranges of equivalent adjacent elements. |
group
|
Groups consecutively equivalent elements into a single tuple of the element and the number of its repetitions. |
joiner
|
Lazily joins a range of ranges with a separator. The separator itself is a range. If you do not provide a separator, then the ranges are joined directly without anything in between them. |
splitter
|
Lazily splits a range using an element as a separator. This can be used with any narrow string type or sliceable range type, but is most popular with string types. |
splitter
|
Similar to the previous overload of , except this one uses another
range as a separator. This can be used with any narrow string type or sliceable
range type, but is most popular with string types.
|
splitter
|
Similar to the previous overload of , except this one does not use a separator.
Instead, the predicate is an unary function on the input range's element type.
|
splitter
|
Lazily splits the string into words, using whitespace as the delimiter.
|
sum
|
Sums elements of , which must be a finite
input range. Although
conceptually is equivalent to reduce!((a, b) => a +
b)(0, r), uses specialized algorithms to maximize accuracy,
as follows.
|
uniq
|
Lazily iterates unique consecutive elements of the given range (functionality
akin to the uniq system
utility). Equivalence of elements is assessed by using the predicate
pred, by default "a == b". If the given range is
bidirectional, also yields a bidirectional range.
|
Templates
| Name | Description |
|---|---|
each
|
Eagerly iterates over r and calls pred over each element.
|
filter
|
auto
|
filterBidirectional
|
auto
|
map
|
auto
|
reduce
|
Implements the homonym function (also known as accumulate, compress, inject, or foldl) present in various programming
languages of functional flavor. The call first assigns seed to an internal variable result,
also called the accumulator. Then, for each element x in range, result = fun(result, x) gets evaluated. Finally, result is returned. The one-argument version
works similarly, but it uses the first element of the range as the
seed (the range must be non-empty).
|