C++ 数组

与其他编程语言一样,在 C++ 中,数组是一组具有连续内存位置的相似类型的元素。

在 C++ 中,std::array 是一个封装固定大小数组的容器。在 C++ 中,数组的索引从 0 开始。我们只能存储固定数量的元素在 C++ 数组中。

在C/C++编程语言或其他编程语言中,将一组相关的数据项存储在相邻的内存位置中称为数组。可以使用数组的索引任意访问数组元素。数组可以用来存储任何类型的原始数据类型,包括int、float、double、char等。在C/C++中,数组还可以存储派生数据类型,如结构体、指针和其他数据类型,这是一个额外的功能。下面提供了一个数组的示意图。

1.png

C++ 数组的优势

  • 代码优化(减少代码量)
  • 随机访问
  • 易于遍历数据
  • 易于操作数据
  • 易于对数据进行排序等等

C++ 数组的缺点

  • 大小固定

C++ 数组类型

在 C++ 编程中,有两种类型的数组:

  1. 一维数组
  2. 多维数组

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。

在使用数组时需要记住的重要事项

  1. 数组的索引从 0 开始。这意味着第一个保存在索引 0 处的项是 x[0]。
  2. 大小为 n 的数组的最后一个元素保存在索引 (n-1) 处。此示例的最后一个元素是 x[5]。
  3. 数组的元素具有连续的地址。考虑 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

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想