美文网首页IOS 学习
swift 集合类型中的 capacity

swift 集合类型中的 capacity

作者: 西湖钓鱼王 | 来源:发表于2023-01-17 15:03 被阅读0次

swift 的集合有 capacity 属性,代表集合的“容量”

capacity 于 count 是不同的虽然有时候他们的值是一样的.

官方文档中 capacity 的描述

var capacity: Int { get }

var numbers = [10, 20, 30, 40, 50]
// numbers.count == 5
// numbers.capacity == 5

numbers.append(contentsOf: stride(from: 60, through: 100, by: 10))
// numbers.count == 10
// numbers.capacity == 10

我们可以清晰的看到 capacity的初始值来源于数组的初始化.

之后对数组增加元素 capacity 随之变化

但是不够全面:

1:capacity 的增加是 翻倍的 即 “ x 2” 的增加
2:capacity 的容量不会随 数组的删除而缩小 注意 “3”
3:capacity 会随数组的清零而清零

举例子:

var numbers = [10, 20, 30, 40, 50]
// numbers.count == 5
// numbers.capacity == 5 /*初始化获得5*/
print(numbers.capacity)
print(numbers.count)

numbers.append(contentsOf: stride(from: 60, through: 100, by: 10))
// numbers.count == 10
// numbers.capacity == 10
print("--------------------------------------------")
print("capacity = \(numbers.capacity)")
print("count = \(numbers.count)")
print("numbers= \(numbers)")

print("--------------------------------------------")
numbers.append(100)
numbers.append(110)
print("capacity = \(numbers.capacity)")
print("count = \(numbers.count)")
print("numbers= \(numbers)")

print("--------------------------------------------")
numbers.removeSubrange(1..<3)
print("capacity = \(numbers.capacity)")
print("count = \(numbers.count)")
print("numbers= \(numbers)")

print("--------------------------------------------")
numbers.removeAll()
print("capacity = \(numbers.capacity)")
print("count = \(numbers.count)")
print("numbers= \(numbers)")

//控制台
--------------------------------------------
capacity = 10
count = 10
numbers= [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
--------------------------------------------
capacity = 20
count = 12
numbers= [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 100, 110]
--------------------------------------------
capacity = 20
count = 10
numbers= [10, 40, 50, 60, 70, 80, 90, 100, 100, 110]
--------------------------------------------
capacity = 0
count = 0
numbers= []

以上就是个人对 capacity的理解,但是并不清楚他有什么具体的作用...

更深的思考capacity的分配是否占用内存, 如果是的话:是否要根据自己数据的样本来分配合适的大小来更加节省“空间”

相关文章

  • swift 集合类型中的 capacity

    swift 的集合有 capacity 属性,代表集合的“容量” capacity 于 count 是不同的虽然有...

  • Swift语法--集合类型

    集合类型 提供三种集合,数组、合集、字典。Swift中的集合总是明确能储存的值的类型。 Swift中的集合是采用泛...

  • iOS开发 - 「Swift 学习」Dictionary集合类型

    Swift语言Dictionary集合类型的创建、遍历 Swift 的字典类型是无序集合类型 Dictionary...

  • 集合

    集合 ArrayList 集合长度count 表示集合中实际包含的元素个数;capacity 表示集合中可以包含的...

  • Swift -- 集合类型

    Swift 集合类型 Swift 语言提供Arrays、Sets和Dictionaries三种基本的集合类型用来存...

  • 第二十九章 Swift 泛型

    Swift 提供了泛型让你写出灵活且可重用的函数和类型。 1. 集合类 在Swift的集合类中,元素类型是必须指定...

  • Swift基础知识补充(三)

      1、集合类型   Swift中的集合类型主要是指Array、Dictionary和Set,详细情况参见《Swi...

  • Swift3.0集合类型(Collection Types)

    Swift一样有着三种基本集合类型,数组,集合,字典。 在Swift中,这三种类型总是很明确要存储的类型,这意味着...

  • Swift中的集合类型

    Swift提供Arrays、Sets和Dictionaries三种基本的集合类型用来存储集合数据。 1. 数组 数...

  • 从零开始Swift之集合

    Swift中提供了三种主要的集合类型,Array,Sets,Dictionary Array Swift数组中的值...

网友评论

    本文标题:swift 集合类型中的 capacity

    本文链接:https://www.haomeiwen.com/subject/wonthdtx.html