21xrx.com
2024-12-22 22:35:34 Sunday
登录
文章检索 我的文章 写文章
C++中如何动态改变数组长度?
2023-06-27 06:50:26 深夜i     --     --
C++ 动态 改变 数组长度

在C++中,数组是由一些有限大小的连续内存单元组成的。当我们需要存储更多的元素时,我们需要修改数组的长度以适应新的需求。在本文中,我们将讨论C++中如何动态改变数组长度。

使用动态分配内存

在C++中,我们可以使用动态分配内存的方式来改变数组的长度。这可以通过新建一个新的更大的数组来完成,将原数组中的元素复制到新数组中,最后释放原数组的内存。下面是一个示例代码:


#include <iostream>

using namespace std;

int main() {

  int n; // 用户定义的数组长度

  cout << "请输入数组长度:" << endl;

  cin >> n;

  int* arr = new int[n]; // 动态分配内存

  // 向数组中赋值

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

    arr[i] = i + 1;

  }

  // 输出原数组中的元素

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

    cout << arr[i] << " ";

  }

  cout << endl;

  // 定义新数组的长度

  int m;

  cout << "请输入新的数组长度:" << endl;

  cin >> m;

  int* newArr = new int[m]; // 创建新数组

  int len = min(n, m);

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

    newArr[i] = arr[i]; // 复制原数组中的元素

  }

  delete[] arr; // 释放原数组的内存

  arr = newArr; // 更新原数组

  // 向新数组中赋新的值

  for (int i = n; i < m; i++) {

    arr[i] = i + 1;

  }

  // 输出新数组中的所有元素

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

    cout << arr[i] << " ";

  }

  cout << endl;

  delete[] arr; // 释放新数组的内存

  return 0;

}

在上面的代码中,我们首先使用`new`操作符动态分配了一个长度为`n`的整型数组,并将其初始化为从1到n的整数。然后,我们读取用户输入的新数组长度`m`,并创建了一个新的长度为`m`的数组。我们然后用`for`循环遍历原数组和新数组,将原数组的元素复制到新数组中。在复制完成后,我们释放了原数组的内存并将新数组赋给原数组指针,这样就完成了动态数组长度的修改。最后,我们向新数组中赋了新的值,并输出了新数组中的所有元素。最后,我们释放了新数组的内存。

总结

动态分配内存可以让我们在运行时改变数组的长度,这在很多情况下是非常有用的,特别是在我们无法预测需要多少空间时。我们需要注意的是,在完成操作后,我们需要释放原数组和新数组的内存,以避免内存泄漏。

  
  

评论区

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