std.algorithm.iteration.Permutations/permutations - multiple declarations
Function permutations
Lazily computes all permutations of r using Heap's algorithm.
Parameters
| Name | Description |
|---|---|
| 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 view into r.
Note
The elements of the resulting range reuse the same internal buffer of
permutations, so each element is invalidated by popFront. If copies of
intermediate permutations are desired, they need to be individually copied,
such as using to save them in individual, independent
arrays.
See Also
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);
Constructors
| Name | Description |
|---|---|
this
(r)
|
Properties
| Name | Type | Description |
|---|---|---|
empty[get]
|
bool | |
front[get]
|
auto |
Methods
| Name | Description |
|---|---|
popFront
()
|
|
save
()
|
Parameters
| Name | Description |
|---|---|
| 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 view into r.
Note
The elements of the resulting range reuse the same internal buffer of
permutations, so each element is invalidated by popFront. If copies of
intermediate permutations are desired, they need to be individually copied,
such as using to save them in individual, independent
arrays.
See Also
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]]));