21xrx.com
2024-09-20 09:12:00 Friday
登录
文章检索 我的文章 写文章
C++如何改变数组长度
2023-07-09 08:10:23 深夜i     --     --
C++ 数组长度 修改 重新分配 动态内存分配

在C++中,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据。在实际应用中,我们经常需要改变数组的长度。下面介绍一些常见的改变数组长度的方法。

1.使用动态数组

动态数组是一种可以自动调整大小的数组,可以根据需要动态分配存储空间。在C++中,使用new操作符可以动态分配内存。例如,下面的代码定义了一个动态数组,并在运行时根据需要动态分配存储空间:


int n = 10; // 定义数组大小为10

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

// 在这里对数组进行操作

delete[] p; // 释放内存

在需要改变数组长度时,只需重新分配内存即可,例如:


int n = 20; // 新的数组大小

int* p_new = new int[n]; // 重新分配内存

// 复制原数组

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

  p_new[i] = p[i];

}

delete[] p; // 释放原内存

p = p_new; // 将指针指向新的内存

2.使用vector容器

vector是C++ STL库中的容器,可以存储多个相同类型的数据,并且可以自动调整大小。它可以方便地实现数组的动态改变大小。例如:


#include <vector>

using namespace std;

vector<int> vec(10); // 定义一个大小为10的vector

// 在这里对数组进行操作

vec.resize(20); // 改变vector的大小为20

在vector中,resize函数可以改变vector的大小,并自动调整存储空间。需要注意的是,resize函数会将原vector中的数据复制到新的存储空间中。

3.使用realloc函数

C语言中有一个realloc函数可以改变原有内存块的大小,它也可以用于改变数组的长度。例如:


// 定义一个大小为10的数组

int* p = (int*)malloc(10 * sizeof(int));

// 在这里对数组进行操作

p = (int*)realloc(p, 20 * sizeof(int)); // 改变数组长度为20

需要注意的是,使用realloc函数改变数组的长度时,必须保证原有内存块是通过malloc或calloc函数分配的。如果原有内存块是通过new操作符分配的,则不能使用realloc函数改变其大小。

总之,改变数组长度是编程中的一个常见需求,上述方法可以满足不同情况下的需求。需要根据实际情况选择合适的方法。

  
  

评论区

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