手把手教你学C++(十三)--C++ 数组

目录

1. 固定大小的数组

语法:

示例:

统一初始化:

2. 动态数组

示例:

3. 多维数组

示例:

4. 使用 std::array

示例:

5. 使用 std::vector

示例:

6. 数组的常见操作

6.1 数组的初始化

示例:

6.2 数组的排序

示例:

总结


 

在 C++ 中,数组是一种数据结构,用于存储相同类型的多个元素。数组中的元素可以通过索引进行访问,索引通常是整数类型,并且从 0 开始计数。C++ 支持两种主要类型的数组:固定大小的数组和动态数组(通过指针实现的数组)。此外,从 C++11 开始,还可以使用统一的初始化语法来定义数组。

1. 固定大小的数组

固定大小的数组在定义时就需要指定其大小,并且在程序运行期间大小不能改变。

语法:

 

cpp

深色版本

类型 名称[大小];

示例:

 

cpp

深色版本

#include <iostream>
using namespace std;

int main() {
    int numbers[5]; // 定义一个整数数组,大小为 5

    // 初始化数组
    for (int i = 0; i < 5; ++i) {
        numbers[i] = i * 2;
    }

    // 输出数组元素
    for (int i = 0; i < 5; ++i) {
        cout << "numbers[" << i << "]: " << numbers[i] << endl;
    }

    return 0;
}

统一初始化:

从 C++11 开始,可以使用统一初始化语法来定义并初始化数组。

 

cpp

深色版本

int numbers[] = {0, 2, 4, 6, 8}; // 定义并初始化数组

2. 动态数组

动态数组是在运行时动态分配内存的数组,通常通过指针来访问。

示例:

 

cpp

深色版本

#include <iostream>
using namespace std;

int main() {
    int *numbers = new int[5]; // 动态分配内存

    // 初始化数组
    for (int i = 0; i < 5; ++i) {
        numbers[i] = i * 2;
    }

    // 输出数组元素
    for (int i = 0; i < 5; ++i) {
        cout << "numbers[" << i << "]: " << numbers[i] << endl;
    }

    delete[] numbers; // 释放内存
    return 0;
}

3. 多维数组

多维数组可以表示多维数据结构,例如矩阵。

示例:

 

cpp

深色版本

#include <iostream>
using namespace std;

int main() {
    int matrix[2][3]; // 定义一个二维数组

    // 初始化数组
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            matrix[i][j] = i * 3 + j;
        }
    }

    // 输出数组元素
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cout << "matrix[" << i << "][" << j << "]: " << matrix[i][j] << endl;
        }
    }

    return 0;
}

4. 使用 std::array

从 C++11 开始,可以使用 std::array 来替代传统的 C 风格数组。std::array 是一个模板类,提供了更多的功能,如大小查询、迭代器支持等。

示例:

 

cpp

深色版本

#include <iostream>
#include <array>
using namespace std;

int main() {
    array<int, 5> numbers = {0, 2, 4, 6, 8}; // 定义并初始化 std::array

    // 输出数组元素
    for (int i = 0; i < numbers.size(); ++i) {
        cout << "numbers[" << i << "]: " << numbers[i] << endl;
    }

    // 使用迭代器遍历数组
    for (auto it = numbers.begin(); it != numbers.end(); ++it) {
        cout << "Element: " << *it << endl;
    }

    return 0;
}

5. 使用 std::vector

虽然 std::vector 严格来说不是数组类型,但它提供了一种动态数组的行为,并且更加灵活和安全。std::vector 是一个动态大小的数组,可以动态增长或缩小。

示例:

 

cpp

深色版本

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> numbers = {0, 2, 4, 6, 8}; // 定义并初始化 std::vector

    // 添加元素
    numbers.push_back(10);

    // 输出数组元素
    for (int i = 0; i < numbers.size(); ++i) {
        cout << "numbers[" << i << "]: " << numbers[i] << endl;
    }

    // 使用迭代器遍历数组
    for (auto it = numbers.begin(); it != numbers.end(); ++it) {
        cout << "Element: " << *it << endl;
    }

    return 0;
}

6. 数组的常见操作

6.1 数组的初始化

数组可以使用花括号 {} 来初始化,或者使用 std::fillstd::generate 等算法来填充数组。

示例:

 

cpp

深色版本

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int numbers[5] = {0, 1, 2, 3, 4}; // 初始化数组

    // 使用 fill 填充数组
    fill(numbers, numbers + 5, -1);

    // 输出数组元素
    for (int i = 0; i < 5; ++i) {
        cout << "numbers[" << i << "]: " << numbers[i] << endl;
    }

    return 0;
}

6.2 数组的排序

可以使用 std::sort 算法来对数组进行排序。

示例:

 

cpp

深色版本

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int numbers[] = {4, 2, 1, 3, 5}; // 定义数组

    // 对数组排序
    sort(numbers, numbers + 5);

    // 输出数组元素
    for (int i = 0; i < 5; ++i) {
        cout << "numbers[" << i << "]: " << numbers[i] << endl;
    }

    return 0;
}

总结

数组是 C++ 中一种非常重要的数据结构,用于存储相同类型的多个元素。通过合理使用固定大小的数组、动态数组、std::arraystd::vector,你可以有效地管理和操作数据。理解并掌握数组的概念及其操作方法,可以帮助你编写出更加高效和安全的程序。随着编程经验的积累,你会更加熟练地运用这些数组类型来优化你的代码。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值