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. 