boost或任何其他常见的C++库是否提供semiring或monoid抽象(例如模板类)?
我有一些算法要根据这些抽象结构来表达,但到目前为止我还没有遇到任何问题。我可以编写自己的文件,但理想情况下,这些文件应位于我已经在使用的库中,例如boost。
谢谢!
最佳答案
SGI STL具有MonoidOperation概念。例如,为 MonoidOperation 实现了power函数。
Boost.Graph库也定义了Monoid concept。
除了already suggested Elements of Programming以外,您还可以查看Alexander Stepanov( EoP 的作者之一)的Notes on Programming。
注释是免费提供的,并且与 EoP 书有一些重叠。
EoP 和注释之间存在样式差异。- EoP 很像数学教科书,但注释则更“非正式”,例如一些小故事,等等。
顺便说一下,两者都有对上面引用的和函数实现的一些讨论。
附言Alexander Stepanov的精彩演讲:
P.P.S. Collected Papers of Alexander A. Stepanov