用C++编写一个vector头文件,给出代码,其中要包括erase,begin,等基本功能
时间: 2023-10-30 10:04:41 浏览: 80
以下是一个简单的vector头文件示例代码,其中包括了一些基本功能:
```c++
#ifndef VECTOR_H
#define VECTOR_H
template <typename T>
class vector{
private:
T* arr;
int size_;
int capacity_;
public:
//构造函数
vector(): size_(0), capacity_(1){ arr = new T[capacity_]; }
vector(int n): size_(n), capacity_(n){ arr = new T[capacity_]; }
vector(const vector& v): size_(v.size_), capacity_(v.capacity_){
arr = new T[capacity_];
for(int i=0; i<size_; i++){
arr[i] = v.arr[i];
}
}
//析构函数
~vector(){ delete[] arr; }
//获取元素个数
int size() const{ return size_; }
//获取容量大小
int capacity() const{ return capacity_; }
//判断是否为空
bool empty() const{ return size_ == 0; }
//清空vector
void clear(){ size_ = 0; }
//访问元素
T& operator[](int index){ return arr[index]; }
const T& operator[](int index) const{ return arr[index]; }
//添加元素
void push_back(const T& x){
if(size_ == capacity_){
capacity_ *= 2;
T* tmp = new T[capacity_];
for(int i=0; i<size_; i++){
tmp[i] = arr[i];
}
delete[] arr;
arr = tmp;
}
arr[size_++] = x;
}
//删除元素
void erase(int index){
if(index < 0 || index >= size_) return;
for(int i=index; i<size_-1; i++){
arr[i] = arr[i+1];
}
size_--;
}
//获取首元素
T& front(){ return arr[0]; }
const T& front() const{ return arr[0]; }
//获取尾元素
T& back(){ return arr[size_-1]; }
const T& back() const{ return arr[size_-1]; }
//获取迭代器
T* begin(){ return arr; }
T* end(){ return arr+size_; }
};
#endif //VECTOR_H
```
在此示例中,我们实现了vector的构造函数、析构函数、获取元素个数、获取容量大小、判断是否为空、清空vector、访问元素、添加元素、删除元素、获取首元素、获取尾元素以及获取迭代器等基本功能。
阅读全文