有谁知道 C++ 数据结构库提供熟悉的 STL 结构的功能(又名不可变,或 FP 意义上的“持久”)等价物?
“功能性”是指对象本身是不可变的,而对这些对象的修改会返回与父对象共享相同内部结构的新对象。
理想情况下,这样的库将类似于 STL,并且可以与 Boost.Phoenix 很好地配合使用(注意——我实际上并没有使用过 Phoenix,但据我所知,它提供了许多算法但没有数据结构,除非进行延迟计算的更改到现有的数据结构计数 - 是吗?)
有谁知道 C++ 数据结构库提供熟悉的 STL 结构的功能(又名不可变,或 FP 意义上的“持久”)等价物?
“功能性”是指对象本身是不可变的,而对这些对象的修改会返回与父对象共享相同内部结构的新对象。
理想情况下,这样的库将类似于 STL,并且可以与 Boost.Phoenix 很好地配合使用(注意——我实际上并没有使用过 Phoenix,但据我所知,它提供了许多算法但没有数据结构,除非进行延迟计算的更改到现有的数据结构计数 - 是吗?)
我会看看Yannis Smaragdakis 开发的FC++是否包含任何数据结构。当然,这个项目比其他任何项目都更支持 C++ 中的函数式风格。
这更像是一个提醒而不是详细的答案,但 Bartosz Milewski 似乎在这方面做了很多工作。参见,例如:
http://bartoszmilewski.com/2013/11/13/functional-data-structures-in-c-lists/
看起来他在这里实现了 Okasiki 的书 Purely Functional Data Structures 中的很多算法:
https://github.com/BartoszMilewski/Okasaki
注意我还没有尝试过这些,但它们是我在 FC++ 之外看到的第一个 C++ 持久数据结构。
希望我能尽快尝试一下。