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.
Function std.algorithm.iteration.group
Groups consecutively equivalent elements into a single tuple of the element and the number of its repetitions.
Similarly to , uniq produces a range that iterates over unique
consecutive elements of the given range. Each element of this range is a tuple
of the element and the number of times it is repeated in the original range.
Equivalence of elements is assessed by using the predicate grouppred, which
defaults to "a == b".
Prototype
Group!(pred,Range) group(alias pred, Range)( Range r );
Parameters
| Name | Description |
|---|---|
| pred | Binary predicate for determining equivalence of two elements. |
| r | The input range to iterate over. |
Returns
A range of elements of type Tuple!(ElementType!R, uint),
representing each consecutively unique element and its respective number of
occurrences in that run. This will be an input range if R is an input
range, and a forward range in all other cases.
Example
import std.algorithm.comparison : equal; import std.typecons : tuple, Tuple; int[] arr = [ 1, 2, 2, 2, 2, 3, 4, 4, 4, 5 ]; assert(equal(group(arr), [ tuple(1, 1u), tuple(2, 4u), tuple(3, 1u), tuple(4, 3u), tuple(5, 1u) ][]));