看过JDK源码,现在自己想实现一个vector。
最开始的时候,我大概构想了一下怎么设计,一种是设置一个指针数组来存放对象,这样修改的时候可以不用大量的元素复制,但后来仔细想了想,它需要设置一个额外的位示图显示对应位置的元素情况,不划算,所以最终也是采取了JDK源码的设计思路。即,数组初始长度设置为10,以后快溢出之前将数组扩容为原先的1.5倍。
#include <iostream>
#include <cstring>
using namespace std;
class Vector {
private :
int *myVector;
int vectorSize;
int length; // if vectorSize >= length need extendCapacity
public:
Vector() {
length = 10;
myVector = new int[length];
vectorSize = 0;
}
Vector(int nowSize, int value) {
vectorSize = nowSize;
length = nowSize > length ? nowSize : length;
myVector = new int[nowSize];
memset(myVector, value, nowSize);
}
~Vector() {
delete myVector;
myVector = NULL;
}
int rangeCheck(int index);
void push_back(int value);
int size();
int erase(int index);