C++ Reference: class SparsePermutation

Note: This documentation is automatically generated.

A compact representation for permutations of {0..N-1} that displaces few elements: it needs only O(K) memory for a permutation that displaces K elements.

Return type: void

Arguments: int x

To add a cycle to the permutation, repeatedly call AddToCurrentCycle() with the cycle's orbit, then call CloseCurrentCycle(); This shouldn't be called on trivial cycles (of length 1).


Return type: void


Return type: Iterator

Arguments: int i


Return type: std::string

Output all non-identity cycles of the permutation, sorted lexicographically (each cycle is described starting by its smallest element; and all cycles are sorted lexicographically against each other). This isn't efficient; use for debugging only. Example: "(1 4 3) (5 9) (6 8 7)".


Return type: int

Arguments: int i

This is useful for iterating over the pair {element, image} of a permutation: for (int c = 0; c < perm.NumCycles(); ++c) { int element = LastElementInCycle(c); for (int image : perm.Cycle(c)) { // The pair is (element, image). ... element = image; } } TODO(user): Provide a full iterator for this? Note that we have more information with the loop above. Not sure it is needed though.


Return type: int


Return type: void

Arguments: const std::vector<int>& cycle_indices

Removes the cycles with given indices from the permutation. This works in O(K) for a permutation displacing K elements.


Return type: int

TODO(user): complete the reader API.


Return type: explicit

Arguments: int size


Return type: const std::vector<int>&

Returns the "support" of this permutation; that is, the set of elements displaced by it.