Search
View source code
Display the source code in std/algorithm/iteration.d from which this page was generated on github.
Report a bug
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`.

`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` ()
`save` ()

### 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`.

`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]]));
``````