向量定义:整型向量就是一个整数集合,例如:V1{2,3,4,5,1},V2{5,9,8,4,2}。
class CVector
{
private:
int m_iLen;
int*m_pData;
public:
int GetLenth(void)const{ return(m_iLen);}
//请在以下写出未完成的接口
int GetLen(){ return m_iLen; }
const char* const Data() { return *m_pData;}
bool operator==(const CVector& other) const {
int *o_d = const (int*)other.Data();
for(int i = 0; i < m_iLen; i++)
{
if(*m_pData != *o_d)
{
return false;
}
*m_pData++;
o_d++;
}
return true;
}
class CVector1{
public:
CVector1() { m_iLen = 0; p = 0; }
CVector1(int* array, int len)
{
m_iLen = len;
p = new int[len];
//memcpy((char *)p, (char *)array, sizeof(int)*len);
for(int i = 0; i < len; i++)
{
*p = *array;
p++;
array++;
}
}
CVector(const CVector& d)
{
if(this != &d)
{
mLen = d.mLen;
p = new int[mLen];
memcpy((char *)p, (char *)d.Data(), sizeof(int)*mLen);
}
}
~CVector()
{
if((p != 0)&&(mLen >0))
{
delete[] p;
}
}
};
//打印向量内容函数
void PrintVector(const CVector & cVtr)
{
int iLen=cVtr.GetLenth();
int i=0;
if(iLen>0)
{
cout<<"{";
for(i=0;i<iLen - 1;++i)
{
cout<<cVtr[i]<<",";
}
cout<<cVtr[i]<<"}\n";
}
else
{
cout<<"An empty vector!!"<<endl;
}
}
void main()
{
int aiVector[5]={0,1,2,3,4};
CVector cVtr1(aiVector,5);
CVector cVtr2(cVtr1);
CVector cVtr3;
CVector cVtr4;
//打印两个向量,验证其正确与否
cout<<"cVtr1:";
PrintVector(cVtr1);
cout<<"cVtr2:";
PrintVector(cVtr2);
//打印cVtr1向量第0个元素
cout<<"cVtr[0]:";
cout<<cVtr1[0]<<endl;
//赋值运算,并验证赋值后是否相等
cVtr4=cVtr3;
if(cVtr3 == cVtr4)
{
cout<<"cVtr3equals cVtr4!! cVtr4 is :";
PrintVector(cVtr4);
}
CVector& operator*=(int value) const
{
for(int i = 0; i < mLen; i++)
{
*p *= 3;
p++;
}
return *this;
}
CVector& operator+=(int value) const
{
for(int i = 0; i < mLen; i++)
{
*p += 3;
p++;
}
return *this;