PPerm¶
-
template<size_t N = 0, typename Scalar = std::conditional_t<N == 0, uint32_t, typename SmallestInteger<N>::type>>
class PPerm : public PTransf<0, std::conditional_t<0 == 0, uint32_t, typename SmallestInteger<0>::type>>¶ Defined in
transf.hpp
.A partial permutation \(f\) is just an injective partial transformation, which is stored as a vector of the images of \(\{0, 1, \ldots, n - 1\}\), i.e. i.e. \(\{(0)f, (1)f, \ldots, (n - 1)f\}\) where the value UNDEFINED is used to indicate that \((i)f\) is undefined (i.e. not among the points where \(f\) is defined).
If
N
is0
(the default), then the degree of a PPerm instance can be defined at runtime, and ifN
is not0
, then the degree is fixed at compile time.If
N
is0
, then the default value ofScalar
isuint32_t
. IfN
is not0
, then the default value ofScalar
is the smallest integer type able to holdN
. See also SmallestInteger.Note
PPerm has the same member functions as StaticPTransf and DynamicPTransf, this isn’t current reflected by the contents of this page.
- Template Parameters
N – the degree (default:
0
)Scalar – an unsigned integer type (the type of the image values)
Member types¶
Type of the underlying container. |
|
Type of the image values. |
Constructors¶
|
Construct from domain, range, and degree. |
|
Construct from domain, range, and degree. |
Static member functions¶
Returns the identity partial perm on degree() points. |
|
Returns the identity partial perm on the given number of points. |
|
Construct from image list and validate. |
|
Construct from image list and validate. |
|
|
Construct from domain, range, and degree, and validate. |
Member functions¶
Returns the inverse. |
|
Replace contents of a partial perm with the inverse of another. |
|
Returns the left one of this. |
|
Multiply two partial perms and store the product in |
|
Returns the right one of this. |