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 group
pred
, 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) ][]));