multiplicative_group
コンセプト · ポテンシャル付き素集合データ構造(可換・非可換どちらの群でも可)
template <class T>
concept multiplicative_group = !additive_group<T> && requires(const T &a) {
T();
{ a * a } -> std::convertible_to<T>;
{ a.inv() } -> std::convertible_to<T>;
};
概要
乗法的に書かれた群か(合成 *・逆元 .inv()・単位元 T())
非可換群(行列など)もこちらで扱う。+/- を持つ加法群は additive_group を 優先するため除外する(環型を誤って乗法群と判定しないため)。
計算量
- コンパイル時の型制約のため実行時コストなし
関連項目
additive_group— 加法的に書かれた可換群か(合成+・逆元 単項-・単位元T(0))group_identity— 群 T の単位元group_op— 群 T の二項演算 a・bgroup_inv— 群Tの逆元 $a^{-1}$group—potentialized_union_findが扱える群potentialized_union_find— ポテンシャル付き素集合データ構造(可換・非可換どちらの群でも可)