Jenny Yang 2019-09-18 16:55 采纳率: 0%
浏览 304
已结题

请完善一下整型向量类CVector,要求编译通过,运行结果正确?

图片说明图片说明

向量定义:整型向量就是一个整数集合,例如: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;

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-09-18 18:43
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题