c++编写vecrtor容器
时间: 2023-09-04 10:06:38 浏览: 37
这里是一个简单的vector容器的实现,包括了一些基本方法和属性:
```c++
template <typename T>
class vector {
private:
T* data; // 存储元素的数组指针
size_t capacity; // 容量
size_t size; // 当前元素个数
public:
// 构造函数
vector() : data(nullptr), capacity(0), size(0) {}
vector(size_t n) : data(new T[n]), capacity(n), size(n) {}
vector(const vector& other) : data(new T[other.capacity]), capacity(other.capacity), size(other.size) {
std::copy(other.data, other.data + other.size, data);
}
// 析构函数
~vector() {
delete[] data;
}
// 获取当前元素个数
size_t getSize() const {
return size;
}
// 获取当前容量
size_t getCapacity() const {
return capacity;
}
// 在末尾添加一个元素
void push_back(const T& element) {
if (size >= capacity) {
reserve(capacity == 0 ? 1 : capacity * 2);
}
data[size++] = element;
}
// 删除末尾元素
void pop_back() {
if (size > 0) {
--size;
}
}
// 获取指定位置元素的引用
T& operator[](size_t index) {
return data[index];
}
// 获取指定位置元素的常引用
const T& operator[](size_t index) const {
return data[index];
}
// 重置容量
void reserve(size_t newCapacity) {
if (newCapacity > capacity) {
T* newData = new T[newCapacity];
std::copy(data, data + size, newData);
delete[] data;
data = newData;
capacity = newCapacity;
}
}
// 清空vector
void clear() {
size = 0;
}
// 判断是否为空
bool empty() const {
return size == 0;
}
};
```
注意,这只是一个简单的实现,还有很多需要完善的地方(例如迭代器、移动构造函数等),但是基本的功能已经实现了。