在C ++世界中,当std::vector
将已知数量的项目添加到新向量时,push_back
进行了优化 - preallocate space
Haskell未装箱的载体是否有类似物? Doc说cons
是O(n)
。
答案 0 :(得分:3)
Data.Vector.(++)
是O(m + n),这比cons
更有效率n次。因此,如果您只是将新元素放入新的向量中,则可以有效地将其添加到旧向量中。
请注意,在C ++中,只有在有足够的预分配区域时才可以在O(n)中执行此操作。我想,你在Haskell中获得的额外O(m)是由于Data.Vector是不可变的,并且需要副本。
如果您想使用可变向量,请查看
Data.Vector.Mutable.grow