用類模板實現(xiàn)可變長數(shù)組:
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),臨洮企業(yè)網(wǎng)站建設(shè),臨洮品牌網(wǎng)站建設(shè),網(wǎng)站定制,臨洮網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,臨洮網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。#include#includeusing namespace std;
templateclass CArray
{int size; //數(shù)組元素的個數(shù)
T *ptr; //指向動態(tài)分配的數(shù)組
public:
CArray(int s = 0); //s代表數(shù)組元素的個數(shù)
CArray(CArray & a);
~CArray();
void push_back(const T & v); //用于在數(shù)組尾部添加一個元素v
CArray & operator=(const CArray & a); //用于數(shù)組對象間的賦值
T length() {return size; }
T & operator[](int i)
{//用以支持根據(jù)下標訪問數(shù)組元素,如a[i] = 4;和n = a[i]這樣的語句
return ptr[i];
}
};
templateCArray::CArray(int s):size(s)
{ if(s == 0)
ptr = NULL;
else
ptr = new T[s];
}
templateCArray::CArray(CArray & a)
{if(!a.ptr) {ptr = NULL;
size = 0;
return;
}
ptr = new T[a.size];
memcpy(ptr, a.ptr, sizeof(T ) * a.size);
size = a.size;
}
templateCArray::~CArray()
{ if(ptr) delete [] ptr;
}
templateCArray& CArray::operator=(const CArray & a)
{//賦值號的作用是使"="左邊對象里存放的數(shù)組,大小和內(nèi)容都和右邊的對象一樣
if(this == & a) //防止a=a這樣的賦值導致出錯
return * this;
if(a.ptr == NULL) {//如果a里面的數(shù)組是空的
if( ptr )
delete [] ptr;
ptr = NULL;
size = 0;
return * this;
}
if(size< a.size) {//如果原有空間夠大,就不用分配新的空間
if(ptr)
delete [] ptr;
ptr = new T[a.size];
}
memcpy(ptr,a.ptr,sizeof(T)*a.size);
size = a.size;
return *this;
}
templatevoid CArray::push_back(const T & v)
{//在數(shù)組尾部添加一個元素
if(ptr) {T *tmpPtr = new T[size+1]; //重新分配空間
memcpy(tmpPtr,ptr,sizeof(T)*size); //拷貝原數(shù)組內(nèi)容
delete []ptr;
ptr = tmpPtr;
}
else //數(shù)組本來是空的
ptr = new T[1];
ptr[size++] = v; //加入新的數(shù)組元素
}
int main()
{CArraya;
for(int i = 0;i< 5;++i)
a.push_back(i);
for(int i = 0; i< a.length(); ++i)
cout<< a[i]<< " ";
return 0;
注意:push_back()函數(shù)的實現(xiàn),不是單純的在數(shù)組末尾+1,而是要從新申請空間,要不造成越界
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧