请帮我设计刚才的程序中Array模板类的代码
时间: 2024-02-20 12:56:00 浏览: 23
好的,下面是 Array 模板类的代码实现:
```cpp
template<typename T>
class Array {
public:
Array(int capacity = 10);
Array(const Array& other);
~Array();
void push_back(const T& value);
void remove(int index);
T& operator[](int index) const;
int size() const;
int capacity() const;
private:
T* data;
int count;
int capacity_;
void resize(int new_capacity);
};
template<typename T>
Array<T>::Array(int capacity): data(new T[capacity]), count(0), capacity_(capacity) {}
template<typename T>
Array<T>::Array(const Array& other): data(new T[other.capacity_]), count(other.count), capacity_(other.capacity_) {
for (int i = 0; i < count; i++) {
data[i] = other.data[i];
}
}
template<typename T>
Array<T>::~Array() {
delete[] data;
}
template<typename T>
void Array<T>::push_back(const T& value) {
if (count == capacity_) {
resize(capacity_ * 2);
}
data[count++] = value;
}
template<typename T>
void Array<T>::remove(int index) {
if (index < 0 || index >= count) {
return;
}
for (int i = index; i < count - 1; i++) {
data[i] = data[i + 1];
}
count--;
}
template<typename T>
T& Array<T>::operator[](int index) const {
if (index < 0 || index >= count) {
throw std::out_of_range("Index out of range");
}
return data[index];
}
template<typename T>
int Array<T>::size() const {
return count;
}
template<typename T>
int Array<T>::capacity() const {
return capacity_;
}
template<typename T>
void Array<T>::resize(int new_capacity) {
T* new_data = new T[new_capacity];
for (int i = 0; i < count; i++) {
new_data[i] = data[i];
}
delete[] data;
data = new_data;
capacity_ = new_capacity;
}
```
这里实现了一个简单的 Array 模板类,支持动态扩容和随机访问。你可以通过 `push_back` 函数添加元素,通过 `remove` 函数删除元素,通过 `operator[]` 运算符实现随机访问。同时,也提供了 `size` 和 `capacity` 函数来获取当前元素个数和容量大小。