用c++实现使用模板和动态内存分配实现可变长数组
时间: 2024-03-20 19:41:43 浏览: 45
可以使用C++中的类模板和动态内存分配来实现可变长数组。具体实现如下:
```c++
template <typename T>
class DynamicArray {
private:
T* data;
int size;
public:
DynamicArray() : data(nullptr), size(0) {}
DynamicArray(int n) : data(new T[n]), size(n) {}
~DynamicArray() { delete[] data; }
T& operator[](int i) { return data[i]; }
const T& operator[](int i) const { return data[i]; }
int getSize() const { return size; }
void resize(int n) {
T* newData = new T[n];
int minSize = (n < size) ? n : size;
for (int i = 0; i < minSize; i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
size = n;
}
};
```
上述代码定义了一个类模板DynamicArray,其中T表示元素类型。该类包含一个T类型的指针data,表示动态内存分配的数组,以及一个int类型的变量size,表示数组的大小。构造函数和析构函数分别实现了动态内存分配和内存释放。[]运算符重载实现了数组下标访问。getSize方法返回数组大小。resize方法实现了动态数组大小的调整。
使用示例:
```c++
DynamicArray<int> arr(5);
for (int i = 0; i < arr.getSize(); i++) {
arr[i] = i;
}
arr.resize(10);
for (int i = 0; i < arr.getSize(); i++) {
std::cout << arr[i] << " ";
}
```
上述代码创建了一个大小为5的动态数组arr,并将其中的元素赋值为0~4。然后将数组大小调整为10,并输出数组中的元素。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)