OnSets

template<typename TElementType, typename TPointType, typename TContainerType = std::vector<TPointType>>
struct libsemigroups::OnSets

Defined in adapters.hpp.

This is struct applies OnTuples<TElementType, TPointType, TContainerType> to a container of TContainerType and then sorts it.

Template Parameters
  • TElementType: the type of the elements of the semigroup

  • TPointType: the type of the points acted on

  • TContainerType: a container of TPointType

Public Functions

void operator()(TContainerType &res, TContainerType const &pt, TElementType const &p) const

This call operator changes res in-place to contain the image of the container pt of points of type TPointType, under the induced (left or right) action of the element x.

The purpose of the 1st parameter is to avoid repeated allocations of memory to hold temporary points that are discarded soon after they are created.

Return

(None)

Exception

Throws if OnTuples<TElementType, TPointType, TContainerType> throws.

Complexity

pt.size() times the complexity of ImageRightAction<TElementType, TPointType> and the cost plus the complexity of sorting res.

See

OnTuples and ImageRightAction.

Parameters
  • res: a container of TPointType (such as std::vector or std::array) to hold the result

  • pt: a container of TPointType

  • p: an element of type TElementType