boost 或任何其他常见的 C++ 库是否提供半环或幺半群抽象(例如模板类)?
我有一些算法我想用这些抽象结构来表达,但到目前为止我还没有遇到任何东西。我可以自己编写,但理想情况下,这些将在我已经在使用的库中,例如 boost。
谢谢!
SGI STL有MonoidOperation概念。例如,为MonoidOperation实现了幂函数。
Boost.Graph库还定义了Monoid 概念。
除了已经建议 的编程元素之外,您还可以查看Alexander Stepanov( EoP的作者之一)的编程笔记。 笔记是免费提供的,并且与EoP书有一些重叠。
EoP和Notes之间存在风格差异- EoP非常简洁,就像数学教科书一样,但Notes更“非正式” - 有一些小故事等。
顺便说一句,两者都对上面提到的幂函数实现进行了一些讨论。
PS 有 Alexander Stepanov 的精彩演讲:
据我所知,C++ 标准库对这些结构没有任何抽象。然而,STL 的发明者 Alex Stepanov 写了一本名为Elements of Programming成为进一步探索的良好起点。
希望这可以帮助!
Boost.Operators提供了一种为类定义算术运算符组的便捷方法。
预定义概念(仅限语法鸭类型)包括环、有序环、欧几里得环、有序欧几里得环、场和有序场。您应该能够通过从适当的运算符类组派生来为半环或幺半群定义自己的类。