View source code Display the source code in std/algorithm/searching.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.searching.until

Lazily iterates range until the element e for which pred(e, sentinel) is true.

Prototypes

Until!(pred,Range,Sentinel) until(alias pred, Range, Sentinel)(
  Range range,
  Sentinel sentinel,
  OpenRight openRight = OpenRight.yes
)
if (!is(Sentinel == OpenRight));

Until!(pred,Range,void) until(alias pred, Range)(
  Range range,
  OpenRight openRight = OpenRight.yes
);

Parameters

NameDescription
pred Predicate to determine when to stop.
range The input range to iterate over.
sentinel The element to stop at.
openRight Determines whether the element for which the given predicate is true should be included in the resulting range (OpenRight.no), or not (OpenRight.yes).

Returns

An input range that iterates over the original range's elements, but ends when the specified predicate becomes true. If the original range is a forward range or higher, this range will be a forward range.

Example

import std.algorithm.comparison : equal;
int[] a = [ 1, 2, 4, 7, 7, 2, 4, 7, 3, 5];
assert(equal(a.until(7), [1, 2, 4][]));
assert(equal(a.until(7, OpenRight.no), [1, 2, 4, 7][]));

Authors

Andrei Alexandrescu

License

Boost License 1.0.

Comments