第20章 数组

为了对一列变量,常量或者其他类型进行组织,你可以使用数组。数组中的每一项都必须具有相同的数据类型,数据类型可以使整型、浮点型、字符串以及对象类型。下列代码创建了一个空数组,后面你可以向这个空数组中添加字符串

vara1:Array<String> = Array<String>()

var a2:[String] = [String]()

上述代码的第一行展示了一种比较啰嗦的定义数组的方式。你必须使用Array关键字并使用小于<和大于>符号将数据能够存储的数据类型括起来。在上例中,a1只能保存字符串类型的值。

你必须使用复制运算符(=)来初始化数组,接下来是关键字Array后面紧跟着使用<>括起来的数据类型,然后加上一个小括号,这是默认的初始化器,这个初始化器创建了一个数组类型。

有一个定义数组的更加简单的方式,详细见上述代码中的第二行。通过将一个数据类型放在[]中的方法定义并初始化一个数组

如果你在初始化数组的同时填充值,那么数组的声明会更加简单,这得益于Swift的类型推断,可以让你忽略初始化和类型声明。如下所示:

var a3 = ["A","B", "C"]

在上例中,你只是将["A", "B","C"]赋值五日变量a3,但这已经包含足够的信息让编译器将a3推断为字符串数组类型。["A", "B", "C"]被称作数组实量,是写出数组常量的最快的方式

数组的可变性

因为在上面定义的数组都是使用var关键字,所以他们都是可变的。可变意味着你可以添加、移除以及更改列表中的项。你可以使用let关键字创建一个不可变的数组。如下所示:

let ma1 =["D", "E", "F"]

//Causes build error

ma1+="G"

在上例中,使用let关键字创建了一个名为ma1的不可变的数组。不可变数组不能被改变。如果你试图向数据中添加新项,你会得到一个编译时错误。

向数组中添加项目

数组使用列表的方式存储项,这些项使用从0开始的整数进行索引。使用+=运算符或者append函数可以向数组的末尾添加新项,如下:

a1+="Apples"    //新的语法是 a1 += [“Apples”]

a1.append("Oranges")

a1将会包含两个字符串"Apples" 和 "Oranges"。如果你想添加新的项目而不想将其添加到数组的末尾,你可以使用insert函数,如下:

a1.insert("Pineapples",atIndex: 1)

如果你添加了上面的代码,a1的值将会是[Apples, Pineapples, Oranges],你可以将代码敲入Playground中验证一下。

从数组中移除项目

你可以使用removeAtIndex()函数从数组中移除数据。你需要提供你想要移除的项目在数组中的索引作为参数。下列代码给出了这个函数的一个例子,以及其他可以从数组中移除项目的函数。

a1.removeAtIndex(0)

a1.removeLast()

a1.removeAll(keepCapacity: false)

在上述代码中,首先使用removeAtIndex()函数移除了数据中的第一个元素。然后使用函数removeLast移除可最后一个元素,最后,使用removeAll(keepCapacity:).移除了所有的数据。函数removeAll(keepCapacity:)中的参数表明你是否保持数组的存储能力。如果你知道你会岸上替换这些项目,这将会节省处理器资源如果你保持数组的初始状态

改变数组中的元素

要改变数组中的某一项,可以使用如下的代码:

var a4 = [1, 2,33, 4, 5]

a4[2] = 3

在上面的代码中,你通过将一个数组实量[1, 2, 33, 4, 5]赋给一个变量来创建一个有5个数据的数组。然后,你改变第三个位置的项目的值33为3

在上述代码中,你还可以来了解怎样使用整型索引来访问数组中的项目。你将索引值用中括号括起来并在前面加上数组名。

 

遍历数组

如果你有一列项目存储到数组中,你会遇到遍历整个数组或者访问某一个项目的值并在这个值上做一些操作,你可以使用for-in循环

for i in a4{

println("i = \(i)")

}

上例中使用for-in循环遍历a4数组中的每一个元素,每一个元素的值都是可以访问的并会在控制台上打印出来。循环会在第22章进行详细介绍,下面是循环语句最终打印的结果:

i = 1

i = 2

i = 3

i = 4

i = 5

时间: 2024-10-13 16:19:25

第20章 数组的相关文章

第四章 数组,字符串和指针

数组 数组若没有指定初始值则为内存遗留值 如果指定了部分初始值,那么其余部分也默认被指定为0: long data[100]={0};          //给data数组的所有元素赋0 字符串是附加有特殊字符(/0)的字符序列 数组的填充: char president[]="thank you"; wchar_t president[]=L"thank you";     //Unicode字符串 const int max=80; char name[max]

第十四章 数组

第十四章 数组 1.  什么是数组 三要素:数组类型  数组名  下标 2.  数组元素 3.  数组下标越界 一旦越界程序就会报错 4.  倒序输出 5.  将数组的下标定义为常量以便于修改 6.  手动操作数组元素 7.  数组的初始化 空间不够报错,多了用0补 ① ② 字符数组的初始化 char array[10]={"hello"} 等价于char array[10]= "hello" char array[10]={'h','e','l','l','o',

第三部分 基本类型:第15章 数组

派生关系:System.Object => System.Array => 数组 数组是引用类型,是在托管堆上进行分配的. Int32[] myIntegers; //声明了一个数组引用,初始设置为null myIntegers = new Int32[100]; //创建了含有100个Int32的数组,初始化为0.该数组的内存块地址被返回并保存到myIntegers变量中 创建引用类型数组: Control[] myControls; //声明一个数组引用 myControls = new

重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)

定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScript数据结构与算法>- 第3章 数组,本节将为各位小伙伴分享数组的相关知识:概念.创建方式.常见方法以及ES6数组的新功能. 数组 数组是最简单的内存数据结构,用于存储一系列同一种数据类型的值. 注:虽然数组支持存储不同类型的值,但建议遵守最佳实践. 一.数组基础 创建和初始化数组 new Array

第20章 JSON

第20章 JSON 20.1 语法 20.1.1 简单值 20.1.2 对象 20.1.3 数组 20.2 解析与序列化 20.2.1 JSON对象 20.2.2 序列化选项 20.2.3 解析选项 20.3 小结 章节内容详解 原文地址:https://www.cnblogs.com/jiaoshou/p/12384880.html

4.20日第13次作业.,20章战略管理,21章业务流程管理和重组,22章知识管理,高项,29-田哲琦

4.20日第13次作业.,20章战略管理,21章业务流程管理和重组,22章知识管理,高项,29-田哲琦 20章.战略管理1.企业战略的特点有哪些?P420-421 答:1).全局性 2).长远性 3).抗争性 4).纲领性 2.企业战略决策的特点有哪些?P421答:1).决策的对象是复杂的,很难把握住它的结构,并且是没有先例的,对其处理上也是没有经验可循. 2).面对的问题常常是突发性的.难以预料的.所依靠的是来自外部的关于未来如何变化的很少的情报. 3).决策的性质直接涉及到企业的前途. 4)

数据结构期末复习第五章数组和广义表

数据结构期末复习第五章 数组和广义表 二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d    二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j

第20章 priority_queue优先队列容器

/* 第20章 priority_queue优先队列容器 20.1 priority_queue技术原理 20.2 priority_queue应用基础 20.3 本章小结 */ // 第20章 priority_queue优先队列容器 // 20.1 priority_queue技术原理 // 20.2 priority_queue应用基础 -----------------------------------------------------------------------------

紫书第三章 数组和字符串

1  序 系统的整理下第三章的学习笔记.例题代码是在未看书本方法前自己尝试并AC的代码,不一定比书上的标程好:习题除了3-8百度了求解方法,其它均独立完成后,会适当查阅网上资料进行整理总结.希望本博文方便自己日后复习的同时,也能给他人带来点有益的帮助(建议配合紫书--<算法竞赛入门经典(第2版)>阅读本博客).有不足或错误之处,欢迎读者指出. 2  例题 2.1  UVa272--Tex Quotes #include <stdio.h> int main() { bool log