c++ 使用模板和动态内存分配实现可变长数组
时间: 2024-03-20 13:41:57 浏览: 41
可以使用以下代码实现可变长数组:
```c++
template <typename T>
class DynamicArray {
private:
T* data;
int size;
public:
DynamicArray() {
size = 0;
data = nullptr;
}
~DynamicArray() {
if (data != nullptr) {
delete[] data;
}
}
void push_back(T value) {
T* newData = new T[size + 1];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
newData[size++] = value;
if (data != nullptr) {
delete[] data;
}
data = newData;
}
T& operator[](int index) {
if (index < 0 || index >= size) {
throw std::out_of_range("Index out of range");
}
return data[index];
}
int getSize() {
return size;
}
};
```
这里使用了模板来实现在同一类中支持不同类型的数组,同时使用了动态内存分配来实现数组长度可变。`push_back` 方法用于向数组末尾添加元素,当数组已满时会重新分配内存空间,并将原数组中的元素复制到新数组中。`operator[]` 方法用于访问数组中的元素,如果访问的下标超出了数组范围,则会抛出 `std::out_of_range` 异常。`getSize` 方法用于获取数组的长度。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)
![](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)