用cpp设计一个MyVector类
时间: 2024-10-09 17:10:12 浏览: 15
MyVector.cpp
在C++中设计一个名为`MyVector`的类,可以是一个动态数组或向量的实现,用于存储任意类型的元素。这里我们简单地创建一个基本版本,包含常见的向量操作如添加元素、删除元素以及获取大小等:
```cpp
#include <iostream>
#include <stdexcept> // 引入异常处理库
template <typename T>
class MyVector {
private:
std::vector<T> elements; // 存储数据的容器
int capacity; // 容器当前的容量
public:
// 构造函数,初始化空向量
MyVector() : capacity(0) {}
// 析构函数,释放内存
~MyVector() { clear(); }
// 添加元素
void push_back(const T& value) {
if (elements.size() == capacity) {
resize(capacity * 2); // 当达到容量上限时扩大容量
}
elements.push_back(value);
}
// 删除所有元素并释放内存
void clear() {
elements.clear();
capacity = 0;
}
// 返回向量的大小
int size() const {
return elements.size();
}
// 获取指定索引处的元素
T& operator[](int index) {
if (index >= 0 && index < elements.size()) {
return elements[index];
} else {
throw std::out_of_range("Index out of range");
}
}
// 获取只读访问的元素
const T& at(int index) const {
if (index >= 0 && index < elements.size()) {
return elements[index];
} else {
throw std::out_of_range("Index out of range");
}
}
private:
// 扩大容量
void resize(int new_capacity) {
elements.resize(new_capacity);
}
};
// 示例用法
int main() {
MyVector<int> vec;
vec.push_back(5);
vec.push_back(10);
for (int i = 0; i < vec.size(); ++i) {
std::cout << "Element at index " << i << ": " << vec[i] << std::endl;
}
return 0;
}
```
阅读全文