23

有谁知道 C++ 数据结构库提供熟悉的 STL 结构的功能(又名不可变,或 FP 意义上的“持久”)等价物?

“功能性”是指对象本身是不可变的,而对这些对象的修改会返回与父对象共享相同内部结构的新对象。

理想情况下,这样的库将类似于 STL,并且可以与 Boost.Phoenix 很好地配合使用(注意——我实际上并没有使用过 Phoenix,但据我所知,它提供了许多算法但没有数据结构,除非进行延迟计算的更改到现有的数据结构计数 - 是吗?)

4

2 回答 2

4

我会看看Yannis Smaragdakis 开发的FC++是否包含任何数据结构。当然,这个项目比其他任何项目都更支持 C++ 中的函数式风格。

于 2010-05-03T13:31:40.127 回答
2

这更像是一个提醒而不是详细的答案,但 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++ 持久数据结构。

希望我能尽快尝试一下。

于 2013-12-11T15:45:10.787 回答