一维¶
一维数组¶
一维数组用于存储一组相同类型的元素,这些元素在内存中是连续存储的,并可以通过下标进行访问和操作。
一维数组的定义
看题目的数据范围,
如果是100个数据,开100大小;
如果是1000个数据,开1010大小。
数组的初始化¶
数组开到全局变量,默认都是0
将数组定义到 int main() 里,初始值默认是随机数。
在 Dev C++ 中,可能会让你感觉到都是 0,但提交 OJ,肯定出错。
举一个不好的写法
使用大括号,进行初始化
最重要的是,数组开到全局变量。
int a[] = {0, 1, 2, 3, 4}; // 省略数组长度,按照初始化列表的长度,数组长度为5
int a[10] = {0, 1, 2, 3, 4}; // 未赋值的元素,自动初始化为0
使用
memset()函数,进行初始化
int a[110];
int main() {
memset(a, 0, sizeof a); // 初始化成0
memset(a, 0x3f, sizeof a); // 初始化成极大值,都是0x3f3f3f3f
memset(a, -1, sizeof a); // 初始化成-1
...
}
// 关于 memset() 这个函数的原理,需要掌握二进制之后,再回来理解
数组的输入输出¶
int a[110], n;
int main() {
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n; i++) cout << a[i] << ' ';
return 0;
}
数组的访问(下标)¶
下标访问
数组的下标从 0 开始,我们存数据的时候,一般从第 0 位开始存(0-indexed)
当然,我们也可以从第 1位开始存,这样我们就需要整体偏移一下。
下标访问越界
不能访问不在数组存储空间范围内的元素。
数组的遍历¶
遍历,按特定顺序访问数据结构中所有元素的过程。
从左向右遍历
从右向左遍历
常用数组名称¶
| 数组名称 | 单词全拼 | 使用场景 |
|---|---|---|
a[ ], arr[ ] |
array | 最通用的数组名 |
cnt[ ] |
count | 计数数组 |
dis[ ], d[ ] |
distance | 距离、步数 |
vis[ ], st[ ] |
visit, state | 维护是否访问过 |
s[ ] |
string | 字符数组 |
用常量开数组¶
当我们需要开多个数组的时候,需要写很多个 0,很容易多写一个少写一个 0。
为了避免这种低级错误,我们可以使用常量的方式开数组。