自定义一个vector向量类

C++标准模板库STL给出了vector,list,deque,stack,set,map等模板类,平时我们直接使用居多,对于类内部怎么实现不在意。现在以向量类vector为例,简单自定义:

其UML:

vetor

-数组名ele:T

-数组目前大小size:int

-数组容量cap:int

+vector();//用指定元素类型创建一个空向量

+sure():void//当增加元素增多至大于cap时候,自动扩充数组大小

+push_back(T VAL):void

+pop_back():void

+size1():int;

+at(int index):T

+empty():bool

+clear();void

+swap( v1:vector):void

//vector 
template
class vector{
private:
  T *ele;
int size;
int cap;
public:
	vector(){size=0;cap=16;ele=new T[cap];}//创建一个空向量
	void sure(){if(size>cap) {T*old=ele;
	cap=2*size;
	ele=new T[cap];
	for(int i=0;i &v1);};
template
void vector::push_back(T x){
sure();
ele[size++]=x;}
template
void vector::pop_back(){
if(empty()) throw runtime_error("empty");
--size;}
template
int vector::size1(){
return size;}
template
T vector::at(int index){
if(empty()||index>cap) throw runtime_error("empty");
return ele[index];}
template
bool vector::empty(){
if(size==0) return true;
else return false;}
template
void vector::clear(){
	while(!empty()){
	pop_back();}
}
template
void vector::swap(vector &v1){
	int len=v1.size1();
	if(len>=size){
		T *p=new T[len];
for(int i=0;i
调用:

int main(){
vector vi;
for(int i=0;i<10;i++)
	vi.push_back(i);
for(int i=0;i vs;
	vs.push_back("\"beijing\"");
	vs.push_back("\"shanghai\"");
	vs.push_back("\"nanjing\"");

for(int i=0;i vss;
	vss.push_back("beijing");
	vss.push_back("shanghai");
	vss.push_back("beijing");
	vss.push_back("shanghai");
	for(int i=0;i

自定义一个vector向量类_第1张图片
即实现了简单C++向量类自定义与实现。

你可能感兴趣的:(C/C++语言区)