21xrx.com
2024-12-22 23:53:22 Sunday
登录
文章检索 我的文章 写文章
C++ 如何输入未知长度数组
2023-06-27 14:24:41 深夜i     --     --
C++ 输入 未知长度数组

当我们使用 C++ 时,经常会遇到需要输入未知长度数组的情况。这时,我们该如何处理呢?实际上,C++ 有很多种方法可以输入未知长度数组,下面我们就来了解一下其中的几种。

方法一:动态分配内存

我们可以使用动态分配内存的方法,即使用 new 运算符来动态地分配内存空间。然后,根据用户输入的数据动态调整数组大小,最后输入数据即可。

示例代码如下:


int* arr = new int[1];   // 初始分配1个元素的空间

int cnt = 0;        // 记录已输入的数据量

int size = 1;       // 数组的当前容量

while (cin >> arr[cnt]) { // 输入数据

  cnt++;         // 记录已输入的数据个数

  if (cnt == size) {   // 如果已经达到当前容量

    int* tmp = new int[size * 2]; // 重新分配2倍大小的空间

    for (int i = 0; i < size; i++) {

      tmp[i] = arr[i]; // 将原数组数据拷贝到新数组中

    }

    delete[] arr;    // 释放原数组空间

    arr = tmp;     // 指向新数组

    size *= 2;     // 更新容量值

  }

}

方法二:使用 vector 容器

我们也可以使用 vector 容器来处理输入未知长度数组的问题。vector 可以动态调整容量,因此只需要不断向 vector 中添加数据即可。

示例代码如下:


vector<int> arr;  // 声明 vector 容器

int x;

while (cin >> x) {

  arr.push_back(x);  // 向容器中添加数据

}

这种方法比较简单易懂,而且不需要手动进行内存管理,因此更加优雅。

方法三:输入固定长度数组时忽略多余数据

我们也可以使用固定长度数组的方式来输入。在输入时,如果有多余的数据,可以选择忽略。下面是一个简单的示例代码:


const int MAXN = 10010;

int arr[MAXN];

int n = 0;

while (cin >> arr[n]) {

  n++;

  if (n >= MAXN) break;  // 如果已经达到数组最大长度,就退出循环

}

当然,这种方法并不太灵活,只适用于输入量不大的情况。

以上就是几种处理输入未知长度数组的方法。不同的情况下,我们可以选择不同的方法来解决问题,这需要根据具体的需求和背景进行选择。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复