如何快速缩小数组

Ben*_*nMQ 5 swift

swift中的数组可以根据大小动态增长,但似乎不会收缩。

var x: [Int] = []
for i in 0...1000 {
    x.append(i)
}
for i in reverse(1000...0) {
    x.removeAtIndex(0)
}
Run Code Online (Sandbox Code Playgroud)

容量x依然很大。我也尝试removeLast()将其复制到新变量,但似乎并没有减少容量。

rin*_*aro 4

重置capacity,请使用.removeAll(keepCapacity: false)

var x: [Int] = []
for i in 0...1000 {
    x.append(i)
}

x.capacity // -> 1,532
x.removeAll(keepCapacity: false)
x.capacity // -> 0
Run Code Online (Sandbox Code Playgroud)

如果要在优化后保留元素capacity,请使用Array()构造函数复制它:

for i in 0...1000 {
    x.append(i)
}
for i in reverse(0...999) {
    x.removeAtIndex(0)
}
x.capacity // -> 1532
x = Array(x) // -> [1000]
x.capacity // -> 2
Run Code Online (Sandbox Code Playgroud)