21xrx.com
2025-03-24 16:40:19 Monday
文章检索 我的文章 写文章
C++实现不确定长度的数组输入
2023-07-05 06:16:37 深夜i     52     0
C++ 不确定长度 数组 输入

在C++中,我们经常需要输入多个元素的数组,但是数组的长度往往是不确定的。那么,怎样才能实现不确定长度的数组输入呢?下面我们来介绍两种方法。

方法一:使用vector

vector是C++标准库中一个非常有用的容器类,可以充当一个动态数组,并提供了许多便于操作的API。下面是使用vector的示例代码:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
  vector<int> arr; // 定义一个整型的vector数组
  int num; // 存储输入的数字
  while(cin >> num) // 不断读取输入的数字,直到遇到非数字字符或文件结束符
  {
    arr.push_back(num); // 将数字添加到vector末尾
  }
  // 打印vector中的元素
  cout << "输入的数组为:";
  for(int i = 0; i < arr.size(); i++)
  {
    cout << arr[i] << " ";
  }
  cout << endl;
  return 0;
}

这段代码的思路是不断读取输入的数字,然后用push_back()方法将其添加到vector末尾。注意,当输入的非数字字符会打破循环,停止输入。最后,我们可以使用for循环输出vector中的元素。

方法二:使用动态内存分配

如果您不想使用vector类,也可以手动分配内存来创建可变长度的数组。下面是使用new和delete运算符进行动态内存分配的示例代码:

#include <iostream>
using namespace std;
int main()
{
  int* arr = new int[1000]; // 假设数组的最大长度为1000
  int i = 0// 记录当前输入的数字数量
  int num; // 存储输入的数字
  while(cin >> num) // 不断读取输入的数字,直到遇到非数字字符或文件结束符
  {
    *(arr + i) = num; // 将数字添加到动态分配的数组中
    i++; // 计数器加1
    if(i == 1000// 如果已经达到数组最大长度,跳出循环
    
      break;
    
  }
  // 打印动态分配的数组
  cout << "输入的数组为:";
  for(int j = 0; j < i; j++)
  {
    cout << *(arr + j) << " ";
  }
  cout << endl;
  delete[] arr; // 释放动态分配的内存
  return 0;
}

这段代码的思路是,手动使用new运算符在堆上分配内存,创建一个长度为1000的整型数组。然后,不断读取输入的数字,把它们添加到动态分配的数组中。当达到数组最大长度时,跳出循环。最后,我们遍历动态分配的数组,输出其所有元素。最后必须使用delete[]运算符释放已分配的动态内存,在任意有new[]的程序中都必须有配套的delete[]。

  
  

评论区

请求出错了