📅  最后修改于: 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 类型。