gpt4 book ai didi

arrays - 在 Swift 中定义数组容量(以字节数为单位)

转载 作者:行者123 更新时间:2023-11-30 12:05:12 24 4
gpt4 key购买 nike

我正在开发的一个程序正在执行一些字符串操作,其中包含单词的输出数组将与输入数组相同或小于输入数组。例如,输入数组包含 100 个元素,每个元素是一个单词(长度可变)。经过处理后,只有99个元素。假设输入数组为 500 字节。我能否告诉 Swift 确保输出数组的长度至少为 500 字节,以便在添加元素时不需要多次将它们移动到内存的不同部分,从而为元素提供更多空间?

最佳答案

可能存在误解。 Array 存储某种类型 T 的值,并且每个这些值具有相同的大小。在您的情况下, [String] 类型的数组保存值struct String 类型,具有固定大小(就像 Swift 中任何类型的值一样)。

字符串如何在实现细节中设法保存可变数量的字符。如果您检查 Swift 源代码,您会发现 struct String 包含指向实际字符串存储的指针(通过引用计数来实现具有写时复制的值语义)。

因此,您可以为给定数量的元素保留空间以避免数组添加元素时重新分配:

var words: [String] = []
words.reserveCapacity(100)

您还可以在字符串的底层存储中保留空间以避免重新分配如果字符串被扩展:

var word = ""
word.reserveSpace(1000)

但是您不会在数组中保留容量来容纳总数其字符串元素的字符数。

关于arrays - 在 Swift 中定义数组容量(以字节数为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46752456/

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