C++教程-C++数组
C++ 数组
与其他编程语言一样,在 C++ 中,数组是一组具有连续内存位置的相似类型的元素。
在 C++ 中,std::array 是一个封装固定大小数组的容器。在 C++ 中,数组的索引从 0 开始。我们只能存储固定数量的元素在 C++ 数组中。
在C/C++编程语言或其他编程语言中,将一组相关的数据项存储在相邻的内存位置中称为数组。可以使用数组的索引任意访问数组元素。数组可以用来存储任何类型的原始数据类型,包括int、float、double、char等。在C/C++中,数组还可以存储派生数据类型,如结构体、指针和其他数据类型,这是一个额外的功能。下面提供了一个数组的示意图。
C++ 数组的优势
- 代码优化(减少代码量)
- 随机访问
- 易于遍历数据
- 易于操作数据
- 易于对数据进行排序等等
C++ 数组的缺点
- 大小固定
C++ 数组类型
在 C++ 编程中,有两种类型的数组:
- 一维数组
- 多维数组
C++ 一维数组
让我们看一个简单的 C++ 数组的例子,我们将创建、初始化和遍历数组。
\#include <iostream>
using namespace std;
int main()
{
int arr[5]={10, 0, 20, 0, 30}; // 创建和初始化数组
// 遍历数组
for (int i = 0; i < 5; i++)
{
cout<<arr[i]<<"\n";
}
}
输出:
10
0
20
0
30
C++ 数组示例:使用 foreach 循环遍历
我们也可以使用 foreach 循环遍历数组元素。它会逐个返回数组元素。
\#include <iostream>
using namespace std;
int main()
{
int arr[5]={10, 0, 20, 0, 30}; // 创建和初始化数组
// 遍历数组
for (int i: arr)
{
cout<<i<<"\n";
}
}
输出:
10
20
30
40
50
我们为什么需要数组?
对于有限数量的对象,我们可以使用常规变量(v1、v2,v3,...),但是当我们需要保存许多实例时,使用常规变量来管理它们变得困难。为了表示一个变量中的多个实例,我们使用数组。
如果我们尝试访问超出数组界限的元素会发生什么?
如果我们定义了一个大小为 10 的数组,那么数组的元素将从 0 到 9 进行编号。
如果我们尝试访问超过 10 的索引位置的元素,则会发生未定义行为。
C++ 数组中的空成员
在 C++ 中,数组中可以存储的最大元素数是 n。但是,如果我们存储的元素少于 n 个,会发生什么呢?
例如,
// 在数组中只存储 3 个元素 int x[6] = {19, 10, 8};
在这种情况下,数组 x 的宽度为 6 个元素。但我们只给它三个元素的初始化。
当发生这种情况时,编译器用随机值填充空白空间。这个随机值通常会出现为 0。
在使用数组时需要记住的重要事项
- 数组的索引从 0 开始。这意味着第一个保存在索引 0 处的项是 x[0]。
- 大小为 n 的数组的最后一个元素保存在索引 (n-1) 处。此示例的最后一个元素是 x[5]。
- 数组的元素具有连续的地址。考虑 x[0] 的地址为 2120 的情况。
下一个元素 x[1] 的地址将为 2124,然后是 x[2] 的地址 2128,依此类推。
在这种情况下,每个元素的大小增加了四倍。这是因为 int 类型的大小为 4 字节。
什么是二维数组?
这种数组中的每个元素由两个索引描述,第一个索引表示行,第二个索引表示列。
如您所见,使用行和列将元素组织成了一个二维数组;有 I 行和 j 列。
什么是多维数组?
两维数组是最基本的多维数组类型;它也符合多维数组的定义。数组的维数没有限制。
如何将元素插入数组中?
int mark[5] = {19, 10, 8, 17, 9};
// 将第4个元素改为9
mark[3] = 9;
// 从用户输入获取值
// 存储在第3个位置上
cin >> mark[2];
// 从用户输入获取值
// 插入在第i个位置上
cin >> mark[i-1];
// 打印数组的第一个元素
cout << mark[0];
// 打印数组的第i个元素
cout << mark[i-1];
如何显示数组元素的和与平均值?
#include <iostream>
using namespace std;
int main() {
// 不指定大小来初始化数组
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// 打印数组元素
// 使用范围-based for 循环
for (const double &n : numbers) {
cout << n << " ";
// 计算和
sum += n;
// 计算数组元素个数
++count;
}
// 打印和
cout << "\nTheir Sum = " << sum << endl;
// 计算平均值
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
输出:
The numbers are: 7 5 6 12 35 27
Their Sum = 92
Their Average = 15.3333
如何显示数组元素?
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// 打印数组元素
// 使用范围-based for 循环
for (const int &n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// 打印数组元素
// 使用传统的 for 循环
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
输出:
The numbers are: 7 5 6 12 35
The numbers are: 7 5 6 12 35