- yeyou26 的博客
入门级——数组
- 2024-1-23 21:14:07 @
数组
一维数组
期末考试结束了,你准备给班级里50同学每人的考试成绩录入程序,那么你要开50个不同名字的变量吗?
为什么提期末考试
通俗地讲,数组就是更加简洁方便地定义和使用一堆变量
具体地,数组的定义方式如下 : a[n+1]
那么,我们已经定义了一个一个名称为a,长度为n的数组
这个数组里存了n个元素,如果我们想使用第1个元素,那么使用a[1],如果我们想使用第2个元素,那么使用a[2],以此类推,a[i]表示使用数组a中第[i]个元素
需要注意一些细节:
1.数组存在第0个元素,也就是说你可以使用a[0]
但你不必须使用a[0] 也就是说,看个人爱好
2.加入你在定义数组时定义了a[N+1],那么你绝对不可以使用a[N+1],你定义的数组大小始终比你可以使用的大小多1
3.养成好习惯,数组要在全局定义
二维数组
期末考试结束了,你的班级要重新排座位
怎么又是期末考试
现在需要你储存所有位置对应的学生编号
显然,你的班级的座位应该排成这样
口 口 口 口 口
口 口 口 口 口
口 口 口 口 口
口 口 口 口 口
口 口 口 口 口
口 口 口 口 口
显然,这时候线性的数组好像不是特别好用了呢
所以我们要用到二维数组,原理跟一位数组差不多
a[N+1][M+1]
同样的,你需要把数组开大一点,你可以使用a[0][j] a[i][0]也可以不使用他们
多维数组
同理,你可以开任意维的数组,但是一维数组是最常用的,二维数组也很常用,三四维数组很少用到,五维及以上...至少我从未遇见
扩展
我们经常使用嵌套的 for 循环来处理二维数组
例:从标准输入中读取两个数n和m,分别表示黑白图片的高与宽对于接下来的n行数据,每行有用空格分隔开的m个数,代表这一位置的亮度值。现在我们读取这张图片,并将其存入二维数组中。
int a[maxn][maxn];
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++) cin >> a[i][j];
}
字符串string
字符串本质上就是一个存储字符一维数组,它的定义非常简单,你甚至不需要提前预计它的大小,它的定义如下 string s;
字符串的读入也很简单
cin>>s;
或者
cin>>(s+1);
取决于你希望下标从0开始还是下标从1开始
那么好,我怎么知道这个字符串的长度呢?
s.size() 字符串的长度
此外,C++中也封装好了一系列函数供我们使用
string s(str, strbegin,strlen):将字符串str中从下标strbegin开始、长度为strlen的部分作为字符串初值
运算符: + <
......