View source code
Display the source code in std/range/package.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
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.

std.range.FrontTransversal/frontTransversal - multiple declarations

Function frontTransversal

Given a range of ranges, iterate transversally through the first elements of each of the enclosed ranges.

FrontTransversal!(RangeOfRanges,opt) frontTransversal(TransverseOptions opt = TransverseOptions.assumeJagged, RangeOfRanges) (
  RangeOfRanges rr
);

Example

import std.algorithm.comparison : equal;
int[][] x = new int[][2];
x[0] = [1, 2];
x[1] = [3, 4];
auto ror = frontTransversal(x);
assert(equal(ror, [ 1, 3 ][]));

Struct FrontTransversal

Given a range of ranges, iterate transversally through the first elements of each of the enclosed ranges.

struct FrontTransversal(Ror, TransverseOptions opt = TransverseOptions.assumeJagged) ;

Constructors

NameDescription
this Construction from an input.

Properties

NameTypeDescription
back[get] autoBidirectional primitives. They are offered if isBidirectionalRange!RangeOfRanges.
front[get] autoForward range primitives.
length[get] size_tRandom-access primitive. It is offered if isRandomAccessRange!RangeOfRanges && (opt == TransverseOptions.assumeNotJagged || opt == TransverseOptions.enforceNotJagged).
save[get] FrontTransversalDuplicates this frontTransversal. Note that only the encapsulating range of range will be duplicated. Underlying ranges will not be duplicated.

Methods

NameDescription
moveAt Random-access primitive. It is offered if isRandomAccessRange!RangeOfRanges && (opt == TransverseOptions.assumeNotJagged || opt == TransverseOptions.enforceNotJagged).
moveBack Bidirectional primitives. They are offered if isBidirectionalRange!RangeOfRanges.
moveFront Forward range primitives.
opIndex Random-access primitive. It is offered if isRandomAccessRange!RangeOfRanges && (opt == TransverseOptions.assumeNotJagged || opt == TransverseOptions.enforceNotJagged).
opIndexAssign Random-access primitive. It is offered if isRandomAccessRange!RangeOfRanges && (opt == TransverseOptions.assumeNotJagged || opt == TransverseOptions.enforceNotJagged).
opSlice Slicing if offered if RangeOfRanges supports slicing and all the conditions for supporting indexing are met.
popBack Bidirectional primitives. They are offered if isBidirectionalRange!RangeOfRanges.
popFront Forward range primitives.

Aliases

NameDescription
opDollar Random-access primitive. It is offered if isRandomAccessRange!RangeOfRanges && (opt == TransverseOptions.assumeNotJagged || opt == TransverseOptions.enforceNotJagged).

Example

import std.algorithm.comparison : equal;
int[][] x = new int[][2];
x[0] = [1, 2];
x[1] = [3, 4];
auto ror = frontTransversal(x);
assert(equal(ror, [ 1, 3 ][]));

Authors

Andrei Alexandrescu, David Simcha, Jonathan M Davis, and Jack Stouffer. Credit for some of the ideas in building this module goes to Leonardo Maffi.

License

Boost License 1.0.