Cul*_*ann 6 c++ data-structures
函数式编程语言通常用于不可变数据结构,但通过结构共享保持高效.例如,您处理某些信息地图,如果插入元素,则不会修改现有地图,而是创建新的更新版本.为避免大量复制和内存使用,映射将在两个实例之间共享(尽可能好)未更改的数据.
如果有一些模板库提供像C++这样的数据结构的地图,我会感兴趣.我在LLVM的内部类旁边搜索了一下,什么都没发现.
您可以使用普通地图,但用时间戳或“地图版本号”标记每个元素。如果您也想删除元素,请使用两个标记。如果您可能重新插入已删除的元素,那么您需要每个元素的值列表和标记对。
例如,您搜索键“foo”,发现它在版本0到3(包括)中的值为5,然后它被“删除”,然后在版本9到当前版本中它的值为-8 。
不过,这会消耗大量内存和时间。