View source code
Display the source code in std/algorithm/iteration.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.algorithm.iteration.Permutations/permutations - multiple declarations

Function permutations

Lazily computes all permutations of r using Heap's algorithm.

Permutations!Range permutations(Range) (
  Range r
)
if (isRandomAccessRange!Range && hasLength!Range);

Parameters

NameDescription
Range the range type
r the random access range to find the permutations for.

Returns

A forward range of elements of which are an std.range.indexed view into r.

See Also

nextPermutation.

Example

import std.algorithm.comparison : equal;
import std.range : iota;
assert(equal!equal(iota(3).permutations,
    [[0, 1, 2],
     [1, 0, 2],
     [2, 0, 1],
     [0, 2, 1],
     [1, 2, 0],
     [2, 1, 0]]));

Struct Permutations

Lazily computes all permutations of r using Heap's algorithm.

struct Permutations(Range)
  
if (isRandomAccessRange!Range && hasLength!Range);

Constructors

NameDescription
this (r)

Properties

NameTypeDescription
empty[get] bool
front[get] auto

Methods

NameDescription
popFront ()

Parameters

NameDescription
Range the range type
r the random access range to find the permutations for.

Returns

A forward range of elements of which are an std.range.indexed view into r.

See Also

nextPermutation.

Example

import std.algorithm.comparison : equal;
import std.range : iota;
assert(equal!equal(iota(3).permutations,
    [[0, 1, 2],
     [1, 0, 2],
     [2, 0, 1],
     [0, 2, 1],
     [1, 2, 0],
     [2, 1, 0]]));

Authors

Andrei Alexandrescu

License

Boost License 1.0.