模拟C++STL中的vector的实现
时间: 2023-06-15 08:06:49 浏览: 358
下面是一个简单的C++STL中vector的实现,仅供参考:
```c++
template<class T>
class myVector{
private:
T *data; // 存储空间指针
int capacity; // 当前容量
int size; // 元素个数
public:
// 构造函数
myVector(){
data = new T[1]; // 初始容量为1
capacity = 1;
size = 0;
}
// 析构函数
~myVector(){
delete[] data;
}
// 返回元素个数
int getSize(){
return size;
}
// 返回容量
int getCapacity(){
return capacity;
}
// 添加元素
void push_back(T element){
if(size == capacity){ // 容量不足,扩容
T *newData = new T[capacity * 2];
for(int i=0; i<size; i++){
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity *= 2;
}
data[size++] = element;
}
// 删除最后一个元素
void pop_back(){
if(size > 0){
size--;
}
}
// 访问元素
T& operator[](int index){
return data[index];
}
};
```
这个实现中,我们使用了动态内存分配来实现vector的扩容和缩容,同时提供了getSize、getCapacity、push_back、pop_back、operator[]等常用操作。需要注意的是,这个实现并没有考虑线程安全等问题,实际上STL中的vector是支持多线程的。
阅读全文