📜  在 C++ 中获取未知长度大小的数组的输入(1)

📅  最后修改于: 2023-12-03 15:23:07.527000             🧑  作者: Mango

在 C++ 中获取未知长度大小的数组的输入通常使用动态内存分配的方式,也就是使用 new 关键字在堆上分配内存空间,随后通过输入流逐一获取数组元素的值。以下是一个示例代码:

#include <iostream>

int main() {
    int size;
    std::cout << "请输入数组的大小:";
    std::cin >> size;

    // 动态申请内存空间
    int* arr = new int[size];

    // 输入数组元素
    for (int i = 0; i < size; i++) {
        std::cout << "请输入第 " << i + 1 << " 个元素的值:";
        std::cin >> arr[i];
    }

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

    // 释放内存空间
    delete[] arr;

    return 0;
}

在此代码中,使用 std::cin 对输入流进行逐一输入,并使用指针 arr 保存输入的值。由于 arr 指针所指向的内存空间需要手动释放,故使用 delete[] 将其释放。建议在动态内存分配之后,一定要进行指针是否为空的判断,以免因为内存分配失败而导致程序崩溃。

值得注意的是,C++11 引入了 std::vector 类型,可以更方便地动态申请内存空间,并且提供了更多的操作接口,对于长度未知的数组可以作为更优秀的选择。下面是一个使用 std::vector 申请动态内存空间的示例代码:

#include <iostream>
#include <vector>

int main() {
    int size;
    std::cout << "请输入数组的大小:";
    std::cin >> size;

    // 动态申请内存空间
    std::vector<int> arr(size);

    // 输入数组元素
    for (int i = 0; i < size; i++) {
        std::cout << "请输入第 " << i + 1 << " 个元素的值:";
        std::cin >> arr[i];
    }

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

    return 0;
}

在此代码中,使用 std::vector 实现自动动态申请内存空间,无需手动释放,同时提供了更多的操作接口,使用更为方便。对于长度未知的数组,建议使用 C++11 中引入的 std::vector 类型。