• 第九周项目4-我的向量类


    建立一个向量类MyVector,声明如下,请完成类的定义。

    class MyVector          //定义向量类
    {
    public:
        MyVector(int m);    //构造函数,共有m个元素的向量,元素值预置为0
        MyVector(const MyVector &v);  //复制构造函数
        ~MyVector(); //析构函数:释放动态数组所占用的存储空间
        friend istream &operator>>(istream &input, MyVector &d);
        friend ostream &operator<<(ostream &output, const MyVector &d);
        friend MyVector operator+(const MyVector &d1,const MyVector &d2);//向量相加,对应位置上的元素相加
        friend MyVector operator-(const MyVector &d1,const MyVector &d2);//向量相减,对应位置上的元素相减
        bool operator==(const MyVector &d);//判断两个矩阵是否相等,即对应位置上的所有元素是否相等
    private:
        int *Array;       //Array 为动态数组指针,指向向量占用内存的起始地址
        int num;          //向量中元素个数
    };
    int main()  
    {
        MyVector d1(5),d2(5);
        cout<<"输入d1——";
        cin>>d1;
        cout<<"输入d2——";
        cin>>d2;
        cout<<"d1="<<d1<<endl;
        cout<<"d2="<<d2<<endl;
        cout<<"d1+d2="<<d1+d2<<endl;
        cout<<"d1-d2="<<d1-d2<<endl;
        cout<<"d1"<<((d1==d2)?"==":"!=")<<"d2"<<endl;
        return 0;
    }

    代码:

    /*
    * Copyright (c) 2015,烟台大学计算机学院
    * All right reserved.
    * 作者:邵帅
    * 文件:Demo.cpp
    * 完成时间:2015年05月14日
    * 版本号:v1.0
    */
    #include <iostream>
    #include <cstring>
    using namespace std;
    class MyVector          //定义向量类
    {
    public:
        MyVector(int m);    //构造函数,共有m个元素的向量,元素值预置为0
        MyVector(const MyVector &v);  //复制构造函数
        ~MyVector(); //析构函数:释放动态数组所占用的存储空间
        friend istream &operator>>(istream &input, MyVector &d);
        friend ostream &operator<<(ostream &output, const MyVector &d);
        friend MyVector operator+(const MyVector &d1,const MyVector &d2);//向量相加,对应位置上的元素相加
        friend MyVector operator-(const MyVector &d1,const MyVector &d2);//向量相减,对应位置上的元素相减
        bool operator==(const MyVector &d);//判断两个矩阵是否相等,即对应位置上的所有元素是否相等
    private:
        int *Array;       //Array 为动态数组指针,指向向量占用内存的起始地址
        int num;          //向量中元素个数
    };
    MyVector::MyVector(int m)
    {
        num = m;
        Array = new int[num];
        for(int i=0; i<num; i++)
            Array[i]=0;
    }
    
    MyVector::MyVector(const MyVector &d)
    {
        num=d.num;
        Array = new int[num];
        for(int i=0; i<num; i++)
            Array[i]=d.Array[i];
    }
    MyVector::~MyVector()
    {
        delete [] Array;
    }
    istream &operator>>(istream &input, MyVector &d)
    {
        cout<<d.num<<"个元素的向量: ";
        for(int i=0; i<d.num; ++i)
            cin>>d.Array[i];
        return input;
    }
    
    ostream &operator<<(ostream &output, const MyVector &d)
    {
        cout<<"(";
        if(d.num>0)
            cout<<d.Array[0];
        for(int i=1; i<d.num; ++i)
            cout<<", "<<d.Array[i];
        cout<<")";
        return output;
    }
    MyVector operator+(const MyVector &d1,const MyVector &d2)
    {
        MyVector d(d1.num);
        for(int i=0; i<d1.num; i++)
        {
            d.Array[i]=d1.Array[i]+d2.Array[i];
        }
        return d;
    }
    
    MyVector operator-(const MyVector &d1,const MyVector &d2)
    {
        MyVector d(d1.num);
        for(int i=0; i<d1.num; i++)
        {
            d.Array[i]=d1.Array[i]-d2.Array[i];
        }
        return d;
    }
    
    bool MyVector::operator ==(const MyVector &d)
    {
        if(num!=d.num)
            return false;
        bool e = true;
        for(int i=0; i<num; i++)
        {
            if (Array[i]!=d.Array[i])
            {
                e=false;
                break;
            }
            if (!e) break;
        }
        return e;
    }
    int main()
    {
        MyVector d1(5),d2(5);
        cout<<"输入d1——";
        cin>>d1;
        cout<<"输入d2——";
        cin>>d2;
        cout<<"d1="<<d1<<endl;
        cout<<"d2="<<d2<<endl;
        cout<<"d1+d2="<<d1+d2<<endl;
        cout<<"d1-d2="<<d1-d2<<endl;
        cout<<"d1"<<((d1==d2)?"==":"!=")<<"d2"<<endl;
        return 0;
    }
    

    运行结果:



    @ Mayuko

  • 相关阅读:
    java-scanner
    java-hashmap
    单点故障和脑裂
    Client将数据读写HDFS流程
    Zookeeper的作用,在Hadoop及hbase中具体作用
    hadoop 管理命令dfsadmin
    如何确定 Hadoop map和reduce的个数--map和reduce数量之间的关系是什么?
    Spark 数据倾斜
    zookeeper选举
    hive安装详解
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567494.html
Copyright © 2020-2023  润新知