网站首页 > 精选教程 正文
在C/C++中,我们可以用数组来定义多维数组。多维数组中的数据以表格形式(按行主顺序)存储。
声明N维数组的一般形式:
data_type array_name[size1][size2]....[sizeN];
data_type: Type of data to be stored in the array.
Here data_type is valid C/C++ data type
array_name: Name of the array
size1, size2,... ,sizeN: Sizes of the dimensions
例如:
Two dimensional array:
int two_d[10][20];
Three dimensional array:
int three_d[10][20][30];
多维数组的大小
可以通过将所有维的大小相乘来计算可以存储在多维数组中的元素总数。
例如:
数组int x[10][20]可存储总计(10 * 20)= 200个元素。
类似地,数组x[5][10][20]可以存储总计(5 * 10 * 20)= 1000个元素。
二维数组
二维数组是多维数组的最简单形式。我们可以将二维数组看作是一维数组的数组,以便于理解。
1)声明大小为x,y的二维数组的基本形式:
data_type array_name[x][y];
data_type: Type of data to be stored. Valid C/C++ data type.
2)我们可以将大小为10,20的二维整数数组“ x”声明为:
int x[10][20];
3)二维数组中的元素通常用x[i][j]表示,其中i是行号,“ j”是列号。
4)二维数组可以看作是具有“ x”行和“ y”列的表,其中行号的范围是0到(x-1),列号的范围是0到(y-1)。带有三行三列的二维数组“ x”如下所示:
初始化二维数组:可以通过两种方式初始化二维数组。
第一种方法:
int x[3][4] = {0, 1 ,2 ,3 ,4 , 5 , 6 , 7 , 8 , 9 , 10 , 11}
上面的数组有3行4列。括号中从左到右的元素也从左到右存储在表中。元素将按顺序填充到数组中,第一行从左开始的前4个元素,第二行从下4个元素,依此类推。
更好的方法:
int x[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};
这种类型的初始化使用嵌套的花括号。每组内部括号代表一行。在上面的示例中,总共有三行,因此有三组内部括号。
访问二维数组的元素:使用行索引和列索引访问二维数组中的元素。
例如:
int x[2][1];
上面的示例表示在第三行和第二列中的元素。
注意:在数组中,如果数组大小为N。其索引将为0到N-1。因此,对于行索引2,行号为2 + 1 = 3。
要输出二维数组的所有元素,我们可以使用嵌套的for循环。我们将需要两个for循环。一个遍历行,另一个遍历列。
// C++ Program to print the elements of a
// Two-Dimensional array
#include<iostream>
using namespace std;
int main()
{
// an array with 3 rows and 2 columns.
int x[3][2] = {{0,1}, {2,3}, {4,5}};
// output each array element's value
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
{
cout << "Element at x[" << i
<< "][" << j << "]: ";
cout << x[i][j]<<endl;
}
}
return 0;
}
输出:
Element at x[0][0]: 0
Element at x[0][1]: 1
Element at x[1][0]: 2
Element at x[1][1]: 3
Element at x[2][0]: 4
Element at x[2][1]: 5
三维数组
初始化三维数组:三维数组中的初始化与二维数组中的初始化相同。不同之处在于,随着大小的增加,嵌套大括号的数量也会增加。
方法1:
int x[2][3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23};
更好的方法:
int x[2][3][4] =
{
{ {0,1,2,3}, {4,5,6,7}, {8,9,10,11} },
{ {12,13,14,15}, {16,17,18,19}, {20,21,22,23} }
};
访问三维数组中的元素:访问三维数组中的元素也类似于二维数组。 不同之处在于,在三维数组中,我们必须使用三个循环来增加一维,而不是两个循环。
// C++ program to print elements of Three-Dimensional
// Array
#include<iostream>
using namespace std;
int main()
{
// initializing the 3-dimensional array
int x[2][3][2] =
{
{ {0,1}, {2,3}, {4,5} },
{ {6,7}, {8,9}, {10,11} }
};
// output each element's value
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
cout << "Element at x[" << i << "][" << j
<< "][" << k << "] = " << x[i][j][k]
<< endl;
}
}
}
return 0;
}
输出:
Element at x[0][0][0] = 0
Element at x[0][0][1] = 1
Element at x[0][1][0] = 2
Element at x[0][1][1] = 3
Element at x[0][2][0] = 4
Element at x[0][2][1] = 5
Element at x[1][0][0] = 6
Element at x[1][0][1] = 7
Element at x[1][1][0] = 8
Element at x[1][1][1] = 9
Element at x[1][2][0] = 10
Element at x[1][2][1] = 11
以类似的方式,我们可以创建任意维数的数组。但是,复杂度也随着维数的增加而增加。
最常用的多维数组是二维数组。
猜你喜欢
- 2024-11-16 面向JVM编译-类实例、数组的创建和使用
- 2024-11-16 来,一起聊聊Excel中的数组(excel数组公式有哪些)
- 2024-11-16 数组的维数及数组公式的讲解(数组维的大小)
- 2024-11-16 C语言中数组的类型和使用(c语言中数组的概念及作用)
- 2024-11-16 C# - 多维与交错数组 036(交错数组和多维数组有何区别?)
- 2024-11-16 Numpy第6练:如何操控数组的维度与形状?干货满满!
- 2024-11-16 NumPy之:多维数组中的线性代数(numpy 多维数组)
- 2024-11-16 S7-1200 数组数据类型(ARRAY)(s71200plc数据类型)
- 2024-11-16 JAVA中如何调用matlab并返回运算结果?
- 2024-11-16 Java基础03(java基础案例教程第二版)
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)