vector类的简单实现c++
时间: 2024-09-15 07:11:43 浏览: 50
c++ vector模拟实现代码
在C++中,`std::vector` 是一个非常实用的序列容器,它能够动态地存储元素,并且能够快速地访问任何一个元素。下面是一个简化版的 `vector` 类的实现示例,仅用于演示基本概念:
```cpp
template <typename T>
class SimpleVector {
private:
T* data; // 指向动态分配数组的指针
size_t capacity; // 当前分配的存储空间大小
size_t size; // 当前存储的元素数量
public:
SimpleVector() : data(nullptr), capacity(0), size(0) {
// 默认构造函数
}
~SimpleVector() {
delete[] data;
}
void push_back(const T& value) {
if (size >= capacity) {
// 需要扩展存储空间
reserve(capacity == 0 ? 1 : capacity * 2);
}
data[size++] = value;
}
void reserve(size_t newCapacity) {
if (newCapacity > capacity) {
T* newData = new T[newCapacity];
for (size_t i = 0; i < size; ++i) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity = newCapacity;
}
}
T& operator[](size_t index) {
if (index >= size) {
throw std::out_of_range("Index out of range");
}
return data[index];
}
const T& operator[](size_t index) const {
if (index >= size) {
throw std::out_of_range("Index out of range");
}
return data[index];
}
size_t getSize() const {
return size;
}
};
```
这个简单的 `vector` 类实现了以下几个基本功能:
- 动态数组的存储
- 通过 `push_back` 添加元素
- `reserve` 方法来预先分配空间,避免在添加新元素时频繁地重新分配内存
- 通过 `operator[]` 提供了快速的元素访问能力
- 析构函数中释放内存,避免内存泄漏
需要注意的是,这个简化版的 `vector` 实现并没有实现迭代器支持、异常安全性、边界检查的全面性、拷贝构造函数、赋值操作符、移动语义等完整的 `std::vector` 功能。
阅读全文