21xrx.com
2024-11-05 18:50:53 Tuesday
登录
文章检索 我的文章 写文章
C++实现不确定长度的数组输入
2023-07-05 06:16:37 深夜i     --     --
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[]。

  
  

评论区

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