C++数组大小通过输入确定

在做一道算法题时,需要通过输入确定数组大小,此时不能通过

cin>>n;

int v[n];

(因为这是静态数组,所以需要使用动态数组):

一维:

cin>>n,

int *a=new int[n]

运行时才知道大小为n;

注意不要忘记删除我们new的内存

delete []a;

二维:

cin>>m>>n;

int **a=new int *[m];

for(int i=0;i<m;i++)

a[i]=new int[n];

for(int i = 0; i < m; ++i)
delete []a[i];

### C++ 数组输入示例 在C++中,可以通过多种方法实现数组输入操作。以下是几种常见的数组输入方式及其对应的代示例。 #### 使用标准库 `cin` 进行一维数组输入 通过循环结构逐个读取用户输入的数据到数组中: ```cpp #include <iostream> using namespace std; int main() { const int size = 5; // 定义数组大小为常量表达式 [^2] int array[size]; cout << "请输入 " << size << " 个整数:" << endl; for (int i = 0; i < size; ++i) { cin >> array[i]; // 用户输入数据存储至数组中 } cout << "您输入数组为:" << endl; for (int i = 0; i < size; ++i) { cout << array[i] << " "; } cout << endl; return 0; } ``` 此代展示了如何利用简单的循环来完成一维数组输入与输出过程 [^1]。 --- #### 处理多维数组输入 如果需要处理二维数组,则可以在嵌套循环中实现输入功能: ```cpp #include <iostream> using namespace std; int main() { const int rows = 3, cols = 4; // 定义二维数组行列数目 [^2] int matrix[rows][cols]; cout << "请输入一个 " << rows << " 行 " << cols << " 列的矩阵:" << endl; for (int i = 0; i < rows; ++i) { // 遍历每一行 for (int j = 0; j < cols; ++j) { // 遍历每列 cin >> matrix[i][j]; // 存储用户输入值 } } cout << "您输入的矩阵为:" << endl; for (int i = 0; i < rows; ++i) { for (int j = 0; j < cols; ++j) { cout << matrix[i][j] << "\t"; // 输出矩阵元素 } cout << endl; } return 0; } ``` 上述程序实现了二维数组的初始化以及其内容展示的功能 [^1]。 --- #### 动态分配数组并接收输入 当无法提前确定数组尺寸时,可以借助动态内存管理技术(如指针)或者 STL 中的容器类 vector 来解决这一需求 : ##### 方法 1:使用 new 关键字动态创建数组 ```cpp #include <iostream> using namespace std; int main() { int n; cout << "请输入数组长度:"; cin >> n; int* dynamicArray = new int[n]; // 动态分配n个整型空间 cout << "请输入 " << n << " 个整数:" << endl; for (int i = 0; i < n; ++i) { cin >> dynamicArray[i]; } cout << "您输入数组为:" << endl; for (int i = 0; i < n; ++i) { cout << dynamicArray[i] << " "; } cout << endl; delete[] dynamicArray; // 记得释放动态申请的空间 return 0; } ``` 此处演示了如何运用动态内存分配机制满足不同场景下的应用需求 。 ##### 方法 2:采用 STL 容器 vector 实现更灵活的操作 ```cpp #include <iostream> #include <vector> // 引入向量头文件 using namespace std; int main() { int m; cout << "请输入数组长度:"; cin >> m; vector<int> vec(m); // 创建容量为m的向量对象 cout << "请输入 " << m << " 个整数:" << endl; for (int k = 0; k < m; ++k) { cin >> vec[k]; } cout << "您输入数组为:" << endl; for (const auto& elem : vec) { // 范围for语句遍历整个向量 cout << elem << " "; } cout << endl; return 0; } ``` 这段代体现了STL容器带来的便利性和高效性,在实际开发过程中推荐优先选用此类工具 。 --- #### 总结 以上分别介绍了固定大小的一维、二维数组输入方法;还探讨了基于动态内存管理和现代C++特性——STL容器的解决方案。这些技巧能够帮助开发者根据不同情况选择最合适的手段完成任务目标。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值