使用模板和动态内存分配实现可变长数组
时间: 2024-03-20 15:44:54 浏览: 133
介绍一个模板动态数组
4星 · 用户满意度95%
好的,我可以为您解答这个问题。
可变长数组是指数组的大小在运行时可以动态改变。实现可变长数组可以使用模板和动态内存分配。
首先,我们需要定义一个模板类。模板类可以接受不同的数据类型,并且可以使用类型参数来确定数组的大小。
```c++
template <typename T>
class DynamicArray {
public:
DynamicArray() : m_data(nullptr), m_size(0) {}
DynamicArray(int size) : m_size(size) {
m_data = new T[m_size];
}
~DynamicArray() {
delete[] m_data;
}
void resize(int newSize) {
T* newData = new T[newSize];
int minSize = (newSize > m_size) ? m_size : newSize;
for (int i = 0; i < minSize; i++)
newData[i] = m_data[i];
delete[] m_data;
m_data = newData;
m_size = newSize;
}
private:
T* m_data;
int m_size;
};
```
在上面的代码中,我们定义了一个 DynamicArray 模板类,它包含两个私有成员变量:m_data 和 m_size。 m_data 是一个指向 T 类型的指针,用于存储动态数组的元素。m_size 是数组的大小。
构造函数使用 new 运算符为 m_data 分配内存,并将 m_size 设置为指定的大小。析构函数使用 delete[] 运算符释放 m_data 的内存。
resize() 函数用于改变数组的大小。它首先为新的数组分配内存,然后将旧数组的元素复制到新数组中,最后,释放旧数组的内存。
使用 DynamicArray 类很简单。我们只需要创建它的一个实例,并使用 resize() 函数来改变数组的大小。例如:
```c++
DynamicArray<int> arr(10);
arr.resize(20);
```
这将创建一个包含 10 个整数的数组,并将其大小更改为 20。
希望这个解答可以帮助您!
阅读全文