gpt4 book ai didi

arrays - 使用 reserveCapacity 向后快速填充数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:24:48 24 4
gpt4 key购买 nike

我有一个通用算法,其中必须以反向(从最高索引到最低索引)填充预先已知大小的数组。如果数组没有被反向填充,最有效的方法是调用 reserveCapacity 然后 append -ing 值。换句话说,

var arr = [T]()
arr.reserveCapacity(minimumCapacity: knownCapacity)
// append values using algorithm

但是,这会将算法生成的第一个值添加到索引 0 处。我需要它从索引 knownCapacity - 1 开始并向后工作。

这在 Swift 中如何实现?当然,我可以从 0 开始添加值,然后反转数组,但反转是一项昂贵的操作。理想情况下,会有某种 reserveBackwardsCapacityprepend 方法系统,或者语言中专门为此构建的数据结构,但我无法做到找到其中一个。

我会使用 [T](count: knownCapacity, repeatedValue: ) 并从后面填充,但因为该算法是通用的(它应该适用于任何类型 T) 我没有任何方法知道要为 repeatedValue 放什么(并且用要覆盖的值填充数组将是昂贵且不必要的)。

最佳答案

一个想法:在添加第一个值之前不要初始化数组。当您获得第一个值时,使用您的 knownCapacity 和第一个值作为 repeatedValue 来初始化您的数组。然后从数组的后面到前面添加可用的其他项。

关于arrays - 使用 reserveCapacity 向后快速填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com