STL中partial_sum
算法的实际用途是什么?
还有哪些其他有趣/不平凡的示例或用例?
最佳答案
我用它来减少玩具lambda演算解释器中的简单标记清除垃圾收集器的内存使用。
GC池是大小相同的对象数组。目的是消除未链接到其他对象的对象,并将其余对象压缩到数组的开头。由于对象在内存中移动,因此每个链接都需要更新。这需要一个对象重映射表。partial_sum
允许表以压缩格式存储(每个对象少至一位),直到扫描完成并且内存已释放。由于对象很小,因此大大减少了内存使用。
remove_if
将标记的对象压缩到池的开头。 partial_sum
可以生成指向新池的指针/索引表。将重映射表放在刚刚释放的内存中,这对数据缓存特别友好,因此仍然很热。
关于c++ - STL的 'partial_sum'有什么实际用途?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4116388/